2010-12-09 5 views
0

J'ai une base de données avec deux tables, jeux et régions. Mon but est de garder une trace des dates de sortie dans chaque région pour les jeux.Relations un à un/paires de clés uniques

Accordée, les régions ne changeront pas très souvent, mais serait-il préférable de créer une nouvelle colonne pour chaque région dans les jeux, ou créer une table release_dates entre elles?

Si je crée une nouvelle table entre eux, comment puis-je m'assurer qu'il n'y a qu'une seule date de sortie pour chaque paire région/jeu?

Répondre

3

Je voudrais aller avec la table release_dates. Cela vous évite d'avoir besoin de valeurs NULL dans votre table de jeux si, disons, une région particulière n'obtient pas de version.

Dans votre table release_dates, vous pouvez faire region_id une clé étrangère et game_id une clé étrangère, puis faire (game_id, region_id) la clé primaire pour la table release_dates. Cela garantira que chaque combinaison (game_id, region_id) n'apparaît qu'une seule fois.

+0

+1 Je nommerais la table quelque chose cross-ref comme 'games_regions' colonnes supplémentaires peuvent être ajoutés à l'avenir sans le nom de la table devient source de confusion. De plus, c'est un moyen plus commun de nommer les tables de références croisées (avec 'games_x_regions'). – webbiedave

+0

Oh, je ne savais pas que vous pouviez avoir une clé primaire comme ça. Très sympa. –

0

Il y a un grand nombre à plusieurs. Une table de jonction intermédiaire contenant game_id et region_id est la bonne solution.

Questions connexes