Préfixe de BDD & de tables différenciés : quelles possibilités ?

Bonjour,

Pour les besoins d’un projet je souhaiterais exploiter des tables non-conventionnelles pour certains de mes objets éditoriaux :

Ma BDD s’appelle spip_monsite et je souhaiterais disposer de tables nommées :

france_regions (objet region)
france_departements (objet departement)
france_villes (objet ville)

Mais aussi :
statistique_regions (objet stat_region)
statistique_villes (objet stat_ville)

  1. Est-il possible aujourd’hui (SPIP 4.1) de le faire ?
  2. Est-il recommandable de le faire (risques ou incompatibilités potentielles ?)
  3. Est-il recommandable de le faire pour le futur (risques ou incompatibilités potentielles pour SPIP 5 et ultérieur ?)

J’ai trouvé cette doc de @YannX_Spip et de @JLuc : Noms des tables, préfixe de BDD, fonctions de SPIP et API sql

Mais elle date de 2018 et tout ne me parait pas aussi limpide que je le souhaiterais !

Merci par avance pour votre aide !

Salut, pas certain de répondre à la question, mais tu peux aussi déclarer une autre base cf Déclarer une autre base - Programmer avec SPIP 4

Avec SPIP, tu as deux solutions clefs en main !
Soit tu utilises les plugins de géographie qui installent les éléments pays/villes/départements etc

Soit tu utilises le plugin La Fabrique qui te permet de créer ton propre plugin et ses nouveaux objets
Suivant tes choix, tu auras alors dans ta base de nouvelles tables créées spip_patates et spip_patates_liens avec un champ id_patate pour faire les jonctions dessus en tant que id_objet dans les autres tables.

J’avais pas vu le post de b_b, évidemment, créer ou utiliser une autre base.

Merci pour ces premiers retours.

Mes objets sont factices pour l’exemple. L’idée est de savoir si il est possible au sein d’une BDD spip_monsite de faire cohabiter les tables nommées conventionnellement selon le préfixe de la base (spip_articles, spip_auteurs, etc) avec des tables représentant de nouveaux objets éditoriaux SPIP et disposant de préfixes variés ou bien ne disposant d’aucun préfixe :

BASE spip_monsite avec les tables :
spip_articles
un_autre_objet_declare
prefixe_un_autre_objet_edito

C’est possible.
Juste tu perdras certains automatismes secondaires mais parfois pratiques (et tu devras découvrir lesquels car c’est pas documenté).
J’ai un site dans cette situation.

Note que « préfixe différent du préfixe standard », c’est la même chose que « aucun préfixe ».

Ceci dit, c’est mieux certainement de se servir de la Fabrique sur des tables existantes, mais je crois pas qu’elle sait intégrer des tables qui n’ont pas le préfixe standard.

Par expérience, tout est possible avec SPIP et les BDD, mais il est plutôt déconseillé de mêler dans une même table des préfixes différents, tu vas te casser la tête et la limpidité du code va être bourbeux.

Par exemple, j’ai pu jouer avec 4 bases de données différentes et le code est resté clair, me permettant de chainer d’autres bases structurées de la même façon. Et c’était en SPIP3, donc sans les facilités actuelles.

Un « objet » au sens SPIP (API de déclaration des objets) doit être sur le même préfixe que la base où tu l’utilises, sinon c’est pas un objet SPIP.

Tu peux parfaitement avoir des tables qui n’ont pas le préfixe hein, mais juste tu peux pas dire que ce sont des « objets SPIP ».

Tu peux éventuellement utiliser des déclaration de tables externes avec un connect.php spécifique à chaque base, mais tu ne pourras pas faire de jolies jointures… je ne pense pas qu il soit possible en l état, d avoir des tables/bases avec des préfixes different de la base courante tout en se reposant sur le mécanismes de jointures de spip… amha il faudrait synchroniser les tables non spip d un autre serveur avec des tables spip conventionnelle de la base courante.

Le mar. 12 sept. 2023, 10:17, Pierre-Jean via Discuter de SPIP <noreply@discuter.spip.net> a écrit :

Pierre-Jean
Septembre 12

Bonjour,

Pour les besoins d’un projet je souhaiterais exploiter des tables non-conventionnelles pour certains de mes objets éditoriaux :

Ma BDD s’appelle spip_monsite et je souhaiterais disposer de tables nommées :

**france_**regions (objet region)
**france_**departements (objet departement)
**france_**villes (objet ville)

Mais aussi :
**statistique_**regions ((objet stat_region)
**statistique_**villes (objet stat_ville)

  1. Est-il possible aujourd’hui (SPIP 4.1) de le faire ?
  2. Est-il recommandable de le faire (risques ou incompatibilités potentielles ?)
  3. Est-il recommandable de le faire pour le futur (risques ou incompatibilités potentielles pour SPIP 5 et ultérieur ?)

J’ai trouvé cette doc de @YannX_Spip et de @JLuc : Noms des tables, préfixe de BDD, fonctions de SPIP et API sql

Mais elle date de 2018 et tout ne me parait pas aussi limpide que je le souhaiterais !

Merci par avance pour votre aide !


Voir le sujet ou répondre à ce courriel pour répondre.

Pour vous désabonner de ces courriels, cliquez ici.

Merci à tous pour vos retours qui ont confirmé mon sentiment : il vaut mieux rester dans les clous !

J’ai dernièrement tenté de déclarer un autre champ que « statut » pour gérer le statut d’un nouvel objet éditorial et ce fut catastrophique :wink: Autre sujet, mais même combat !

Merci encore à vous tous