2017-09-25 4 views
0

Je veux juste vous demander votre avis sur ces schémas de base de données. Lequel préférez-vous et dites-moi pourquoi?Lesquels de ces schémas de base de données sont plus préférables?

Option 1:

Nom de la table: Les résidents

id | nom | street_id

1 | Peter | 1

1 | John | 1

Nom de la table: Rues

id | nom

1 | Rock St.

2 | Vert Saint

Option 2:

Nom de la table: Les résidents

id | nom | rue

1 | Peter | Rock St.

1 | John | Rock St.

Répondre

0

Cela dépend. (Cela dépend toujours! :-)

L'option 1 a l'avantage que si vous avez besoin de changer le nom de "Rock St." à "Rock Rd." alors vous avez seulement besoin de changer une ligne dans la table Streets. Si vous devez changer le nom de la rue dans l'option 2, vous devrez peut-être changer plusieurs lignes.

L'option 2 présente l'avantage que vous n'avez pas besoin de faire une requête JOIN pour obtenir le nom de la route avec le nom du résident. En général, faire un JOIN pour rechercher la rue à l'aide de sa clé primaire n'est pas un grand coût, mais certaines applications exigent tellement d'optimisation des performances qu'elles cherchent à éliminer les jointures. Mais honnêtement, pas beaucoup d'applications sont si sensibles qu'ils ne peuvent pas faire un JOIN de temps en temps.

+0

Merci pour l'explication mais je veux juste demander s'il y a un changement significatif dans les performances pour l'option 1? – Steven

+0

Y a-t-il une différence entre la mise à jour d'une ligne et la mise à jour de milliers ou de millions de lignes? Oui, c'est une grosse différence. –