2011-03-02 2 views
0

J'ai un tableau des listes de propriété. J'ai besoin d'ajouter des villes à ces listes. Est-ce la meilleure pratique de diviser une liste de villes dans sa propre table?Conception de table de base de données

Je voudrais que l'utilisateur lors de l'ajout d'une nouvelle propriété pour pouvoir sélectionner dans une liste de villes.

D'ailleurs c'est un projet Rails.

Répondre

2

Une table de recherche de villes est logique dans ce cas.

Cela vous permettra également d'ajouter plus d'informations pour chaque ville dans le futur, si nécessaire.

0

Oui. Il est généralement recommandé de normaliser votre schéma de base de données de sorte que vous ne répétiez pas les mêmes noms de ville dans plusieurs enregistrements de liste de propriétés dans votre tableau de propriétés.

Il y a des cas où vous voudriez dénormaliser pour des raisons de performance. Je ne considérerais pas votre cas comme un de ces cas jusqu'à ce qu'il se révèle être (c'est-à-dire que les lectures de table deviennent très lentes). Même alors, il y a des optimisations que vous pourriez entreprendre avant de dénormaliser votre schéma.

+2

Ne pas le faire n'a rien à voir avec la dénormalisation. Cela ne rend pas nécessairement l'une ou l'autre chose bonne ou mauvaise - mais vous devez être clair sur ce que le raisonnement est. Il n'y a aucune indication que le schéma de l'OP n'est pas déjà normalisé. – sqlvogel

+0

@dportas Certes, ma réponse aurait mieux servi la question si elle avait inclus des exemples de schéma normalisé et dénormalisé, indiquant que je pensais qu'il demandait lequel il devrait utiliser. –

2

S'il n'y a qu'une seule ville par propriété, il n'y a rien de mal à la placer dans la table des propriétés. S'il y en a plus, il n'y a pas d'autre choix que d'utiliser une table de villes.

Alternativement, si vous voulez choisir les villes à partir d'une liste déroulante sans ajouts autorisés, avoir une table de villes peut être une bonne idée. Si vous faites cela alors vous voulez probablement stocker le cityid pas le nom de la ville dans la table de propriétés. De cette façon, quand quelqu'un change le nom d'une ville (ce qui probablement ne se produit probablement pas très souvent), il suffit de changer un enregistrement. Bien sûr, si vous avez une table cities, vous devez avoir une clé étrangère et assurez-vous que city_id est indexé dans la table des propriétés pour maintenir l'intégrité de vos données. Mettre la ville dans sa propre table n'a rien à voir avec la normalisation.

+0

merci. cela a beaucoup aidé – hanumanDev

Questions connexes