L’estructura de la base de dades

L’estructura de la base de dades és força senzilla. Al llarg d’aquest document localitzareu algunes de les convencions que s’han utilitzat. Per exemple, la majoria dels objectes estan indexats per un enter autoincrementat el nom del qual és del tipus id_objet, i que és considerat com clau primària en la taula adequada.

NB: aquest article necessita una actualització però encara no hi ha ningú que l’estigui fent. És necessari que el llegiu com un element per ajudar-vos a comprendre el funcionament de l’SPIP, però només com una eina de referència. Si desitgeu contribuir a la documentació refent aquest article, sobretot no dubteu a fer-ho!

Contingut redaccional

Les seccions: spip_rubriques


-  Cada secció és identificada pel seu id_rubrique.
-  id_parent és l’id_rubrique de la secció que conté aquesta secció (zero si la secció es troba a l’arrel del lloc).
-  titre, descriptif, texte parlen d’ells mateixos [1].
-  id_secteur és l’id_rubrique de la secció inicial de la jerarquia que la conté. Una secció depèn d’una secció que depèn d’una secció... fins a una secció col·locada a l’arrel del lloc; és aquesta última secció la que determina l’id_secteur. Aquest valor calculat prèviament permet accelerar alguns càlculs de l’espai públic (en efecte, les breus són classificades només per sector i no segons tota la jerarquia).
-  maj és un camp tècnic [2] actualitzat automàticament per MySQL, que conté la data de l’última modificació introduïda a la taula.
-  export, id_import són camps reservats per funcionalitats futures.

Els articles: spip_articles


-  Cada article està identificat pel seu id_article.
-  id_rubrique indica en quina secció està col·locat l’article.
-  id_secteur indica el sector al que correspon la secció abans esmentat (veure el paràgraf anterior per comprendre la diferència entre els dos).
-  titre, surtitre, soustitre, descriptif, chapo, texte, ps parlen d’ells mateixos.
-  date és la data de publicació de l’article (si l’article no ha estat publicat, és la data de creació).
-  date_redac és la data de publicació anterior si introduïu un valor, sinó és igual a «0000-00-00».
-  statut és l’estat actual de l’article: prepa (en curs de redacció), prop (proposat per publicar), publie (publicat), refuse (rebutjat), poubelle (a la paperera).
-  accepter_forum: permet de seleccionar manualment si l’article accepta fòrums (per defecte, si).
-  maj: el mateix significat que en la taula de les seccions.
-  export és un camp reservat a futures funcionalitats.
-  images és un camp que conté la llista de les imatges utilitzades per l’article, en un format particular. Aquest camp es genera per spip_image.php3.
-  visites i referers són utilitzats per les estadístiques sobre els articles. El primer correspon el número de vegades que s’ha carregat l’article a l’espai públic; el segon, conté un extracte de «hash» dels diferents referers, per tal de conèixer el número de referers diferents. Veure inc-stats.php3.

Els autors: spip_auteurs


-  Cada autor és identificat pel seu id_auteur.
-  nom, bio, nom_site, url_site, pgp són, respectivament, el nom de l’autor, una biografia curta, la seva adreça electrònica, el nom i l’URL del seu lloc Web, la seva clau PGP. Informacions modificables lliurement per l’autor.
-  email, login són l’adreça electrònica i el seu login. Només poden ser modificats per un administrador.
-  pass és el «hash» MD5 de la contrasenya.
-  htpass és el valor encriptat (és a dir, generat mitjançant crypt()) de la contrasenya pel .htpasswd.
-  statut és l’estat de l’autor: 0minirezo (administrador), 1comite (redactor), 5poubelle (a la paperera), 6forum (subscrit als fòrums, quan aquests estan definits en mode «per subscripció».)
-  maj té el mateix significat que en les altres taules.

Les breus: spip_breves


-  Cada breu és identificada pel seu id_breve.
-  id_rubrique és la secció (de fet, el sector) en la que es troba classificada la breu.
-  titre, texte, lien_titre, lien_url són el títol, el text, el nom i l’adreça del lloc associat a la breu.
-  date_heure és la data de la breu.
-  statut és l’estat de la breu: prop (proposat per a ser publicat), publie (publicat), refuse (refusat).
-  maj: igual que a les altres taules.

Les paraules clau: spip_mots


-  Cada paraula clau està identificada pel seu id_mot.
-  El type de la paraula clau és el tipus, o grup, escollit per la paraula clau. Definint diferents tipus, estem definint diverses classificacions independents (per exemple «tema», «època», «país»...).
-  titre, descriptif, texte parlen d’ells mateixos.
-  maj: igual que en les altres taules.

Els llocs sindicats: spip_syndic


-  Cada lloc sindicat és identificat pel seu id_syndic.
-  id_rubrique i id_secteur defineixen la posició en la jerarquia del lloc on s’insereixen els continguts sindicats.
-  nom_site, url_site, descriptif són el nom, l’adreça i la descripció del lloc sindicat.
-  url_syndic és l’adreça del fitxer dinàmic utilitzat per recuperar els continguts sindicats (es tracta sovint de l’url_site seguit de backend.php3).

Els articles sindicats: spip_syndic_articles


-  Cada article sindicat és identificat pel seu id_syndic_article.
-  id_syndic es refereix al lloc sindicat d’on s’extreu l’article.
-  titre, url, date, lesauteurs parlen d’ells mateixos.

Elements interactius

Els missatges dels fòrums: spip_forum


-  Cada missatge d’un fòrum és identificat pel seu id_forum.
-  L’objecte al que està vinculat el fòrum s’identifica pel seu id_rubrique, id_article o id_breve. Per defecte, aquests valors són iguals a zero.
-  El missatge pare (és a dir, el missatge al que es respon amb el missatge actual) s’identifica per id_parent. Si el missatge no respon a cap altre missatge, aquest valor és igual a zero.
-  titre, texte, nom_site, url_site són el títol i el text del missatge, el nom i l’adreça de l’enllaç que s’hi vincula.
-  auteur i email_auteur són el nom i el correu electrònic declarats per l’autor. En el cas dels fòrum amb registre, no han de ser forçosament idèntics a les dades que es troben registrades a la fitxa de l’autor (per exemple, a la taula spip_auteurs).
-  id_auteur identifica l’autor del missatge en el cas de fòrums per subscripció.
-  statut és l’estat del missatge: publie (llegible a l’espai públic), prive (escrit com a reacció d’un article en l’espai privat), privrac (escrit en el fòrum intern en l’espai privat), off (suprimit o per validar, segons la moderació dels fòrums -a priori o a posteriori-).
-  ip és l’adreça IP de l’ordinador de connexió al redactar una contribució als fòrums públics.
-  maj té el mateix significat que a les altres taules.

Les peticions: spip_petitions


-  id_article identifica l’article al que està associada la petició (una única petició per article).
-  email_unique, site_obli, site_unique, message defineixen la configuració de la petició: el correu electrònic dels firmants ha de ser únic en les firmes; l’adreça Web és obligatòria i única; s’autoritza un missatge relacionat amb les firmes (oui o non).
-  texte és el text de la petició.
-  maj: igual que en les altres taules.

Les firmes de peticions: spip_signatures


-  Cada firma o signatura és identificada pel seu id_signature.
-  id_article identifica l’article en el que està inclosa la petició que té la firma.
-  nom_email, ad_email, nom_site, url_site són el nom, el correu electrònic, així com el lloc Web declarats per la persona que signa.
-  message és el missatge introduït eventualment per la persona que firma.
-  statut és l’estat de la signatura: publie (acceptada), poubelle (suprimida); qualsevol altre valor dóna el valor de la clau de validació utilitzat per la confirmació per correu electrònic.
-  maj té el mateix significat que en les altres taules.

Les relacions entre els objectes

Aquestes taules no generen cap contingut, simplement una relació entre els objectes presents en altres taules. Així:

-  spip_auteurs_articles defineix la relació entre autors i articles. Si un id_auteur està associat a un id_article, vol dir que l’autor en qüestió ha escrit ell tot sol o juntament amb un(s) altre(s) l’article (pot haver-hi diversos autors per article, i viceversa).

-  spip_mots_articles defineix de la mateixa manera la relació de referenciament dels articles per paraules clau.

Gestió del lloc Web

La taula spip_meta és primordial. Conté parelles (nom, valeur) indexades pel nom (clau primària); aquestes parelles permeten emmagatzemar diferents informacions com la configuració del lloc o la versió instal·lada de l’SPIP.

La taula spip_forum_cache és utilitzada per tal d’adaptar el sistema de memòria cau a la immediatesa dels fòrums. Per cada fitxer de la memòria cau que hagi donat lloc a una cerca de la taula spip_forum, la taula spip_forum_cache emmagatzema els paràmetres de la cerca (article, secció, breu i, eventualment, pare del fòrum). Quan s’envia un missatge, els seus paràmetres es comparen amb els que hi ha a spip_forum_cache, i per cada correspondència trobada el fitxer que hi ha a la memòria cau indicat a la taula s’esborra. D’aquesta manera els missatges no han d’esperar l’actualització regular de la pàgina en la que s’insereixen per poder aparèixer a l’espai públic.

Indexació (motor de cerca)

El motor de cerca utilitza sis taules. Es divideixen en dues categories.

El diccionari d’indexació: spip_index_dico

Cada paraula trobada durant la indexació es emmagatzemada en aquesta taula, així com els 64 primers bits del seu «hash» MD5. És la paraula que serveix de clau primària, permetent d’aquesta manera efectuar d’una manera molt ràpida peticions sobre el començament d’una paraula; es recupera llavors el(s) «hash» que satisfan la petició, per tal d’efectuar la cerca pròpiament dita a les taules d’indexació.

Les taules d’indexació: spip_index_*

Aquestes taules, en número de cinc, generen cadascuna la indexació d’un tipus d’objecte: articles, seccions, breus, autors, paraules clau. Una entrada per paraula i per objecte és emmagatzemada. Cada entrada conté el «hass» de la paraula (de fet, els 64 bits més importants del «hass» MD5, segons més avall), l’identificador de l’objecte indexat (per exemple l’id_article per un article), i el número de punts associat a la indexació de la paraula a dins de l’objecte. Aquest número de punts és calculat en funció del número d’ocurrències de la paraula, ponderat pel camp on tenen lloc les ocurrències: una ocurència en el títol d’un article genera més punts que una ocurència al cos de l’article.

El mecanisme d’indexació s’explica de forma més detallada aquí.

Notes

[1s’expliquen ells mateixos... en francès ;-) Pot ser útil consultar el Lèxic SPIP francès-català.

[2«maj» són les inicials de «mise à jour»: actualització.

Carpeta

Autor merce Publié le : Mis à jour : 26/10/12

Traductions : عربي, català, English, Español, français, italiano, Nederlands