2011-03-22 1 views
0

Dire que j'ai une table simple, nommée content avec les champs suivants: id, title, html, modified_datemysql: simple, table de contenu multilingue

J'ai aussi une table appelée language, avec seulement les champs id et name

Quelle serait la meilleure façon de rendre ma table content multilingue? J'ai pensé à utiliser 2 identifiants uniques, mais je ne suis pas sûr de savoir comment implémenter cela, et auto_increments fonctionnera-t-il quand j'ai plusieurs identifiants uniques?

(Je n'aime pas non plus perdre mon ID-champ unique en tant qu'identifiant unique, car j'ai créé un modèle en PHP qui me permet de créer facilement des objets basés sur le nom et l'ID.)

+0

Vérifiez celui-ci: http://stackoverflow.com/questions/3077305/how-to-use-multilanguage-database-schema-with-orm/4745863 # 4745863 –

Répondre

0

J'utiliserais deux tables pour cela. L'utilisation de "pages" comme exemple:

Tableau: pages
Domaines:

  • id
  • titre (titre en anglais, utilisé pour le référencement)
  • last_modified

Tableau: page_content
Domaines:

  • page_id (clé étrangère)
  • language_id (clé étrangère. Sinon, LANGUAGE_CODE)
  • titre
  • contenu
+0

merci, cela semble bon. J'ai basé mon modèle sur votre suggestion. J'ai maintenant une table appelée 'content' (avec seulement des informations indépendantes du langage comme' date_created') et puis j'ai une table 'contenttranslation' avec' language_id', 'content_id',' title' et 'html' –

0

Pourquoi ne pas ajouter à votre table de contenu un champ FK, un ID de langue?

+0

sûr, mais j'ai besoin d'un moyen de trouver le même contenu dans une autre langue. Donc, si je reçois du contenu 1 avec la langue 2, comment pourrais-je trouver le même contenu dans la langue de 3? –

+0

@Jules - comment identifiez-vous que les deux contenus sont les mêmes, lorsqu'ils sont dans des langues différentes? Si vous dites que la langue et le contenu sont M: N alors plutôt que d'ajouter une clé étrangère; Ajoutez une table associative avec l'ID de contenu de colonnes, l'ID de langue, qui sont tous deux FK à vos tables existantes. –

+0

par le contenu sont les mêmes que je veux dire, ils sont les traductions de l'autre. peut-être que je ne pense pas que cela varie clairement –