it-swarm-fr.com

Quand appliquer la normalisation dans la conception de la base de données

Bonjour les administrateurs de base de données. Récemment, j'ai lu sur la normalisation afin d'améliorer mes compétences de conception de la base de données. Cependant, je suis un peu confus sur quand appliquer cette technique. Avant d'apprendre à la normalisation, je lisais généralement le scénario/description dans les exigences et élaborerait un diagramme ER (à l'aide de la notation de Chen) en utilisant des noms comme des entités et des verbes en tant qu'adles sur leurs relations, passez directement à la réalisation des déclarations SQL pour créer les tables.

À l'heure actuelle, il me semble que la normalisation est effectuée après la conception d'un diagramme ER, appliquez-la à une entité contenant un attribut multi-valeurs.

Ai-je raison de penser cela? Ou suis-je censé utiliser la normalisation avant de créer un ER Digram, peut-être après avoir énuméré les attributs possibles d'un système?

7
morris_wiemp

On dirait que vous le feriez quelque part dans un cours CS ou similaire (qui est une bonne chose imo). Je l'apprends dans certaines classes aussi et j'ai aimé l'approche prise par l'enseignant:

collègues d'autres universités, cours, ... m'a dit qu'ils ont reçu de gros papiers qui ont expliqué la normalisation de manière très théorique (par conséquent plutôt ennuyeuse) et qu'ils n'avaient aucune idée de la manière de déplacer ces connaissances thériques à un diagramme ER.

En revanche, nous passons de nombreuses heures à apprendre à quel point les diagrammes ER, les idées qui composent une bonne et maintenable base de données, comment résoudre des problèmes soulevés dans le diagramme ainsi que dans la base de données (avec SQL) lui-même et bien plus encore. . Après que ces concepts ont été pensés, on nous a dit: "Ce que vous avez fait s'appelle" normalisation "". Vous avez fait cela et que lors de la conception de l'urgence, il s'agit de la 1ère forme de normalisation .....

Une phrase qui a été coincée dans ma tête pour de telles questions de mon professeur est "avec un modèle ER bien conçu, vous avez déjà une base de données normalisée, vous n'avez donc pas besoin de penser à toutes les formes de normalisation".

Étant donné que votre question ne concerne pas comment/pourquoi utiliser la normalisation, mais lorsqu'il est dans le processus de conception, je pense que mon long texte ci-dessus vous donne une réponse éventuelle: lorsque vous avez compris les principes de la conception de la bonne DB, que votre dernière ER-Model IS Normailzed (par exemple, vous avez créé des tables de jointure correctes, les clés étrangères utilisées étaient applicables, ...). Je pense que c'est un processus qui doit aller de la main avec la configuration des tables, leurs relations etc.

Bien entendu, la normalisation n'est pas toujours nécessaire ou souhaitée, mais dans la plupart des cas, "dessiner" l'ER et la réfléchir à l'application de l'application de la normalisation en regardant le modèle et en regardant: "OK, 1ère forme, mes valeurs sont aussi atomiques que possible. "

4
DrColossos

Bonne question. La normalisation de la base de données est souvent enseignée en tant que processus de normalisation par décomposition - c'est-à-dire que vous prenez un schéma existant, puis d'l'améliorer en appliquant des décompositions non liées à la création d'un nouveau schéma. de l'ancien design. Dans la pratique qui n'est généralement pas ce qui est requis.

Si vous créez une nouvelle table ou une nouvelle table de nouvelles tables, votre point de départ est donc une liste des attributs que vous souhaitez représenter. Vous devez donc identifier des dépendances entre les attributs, puis créer des tables normalisées directement en fonction de ces dépendances. Souvent, cela peut être fait mentalement ou sur papier avant que les tables soient encore ajoutées à la conception réelle.

Er modélisation n'est pas nécessairement le meilleur moyen de y parvenir. Modélisation de rôle d'objet est un moyen de créer un modèle sémantique qui capte avec précision davantage d'aspects de la modélisation des données et des règles commerciales que la modélisation d'ER. Vous pouvez utiliser des outils tels que [~ # ~] NORMA [~ # ~ ~] Pour générer un schéma de base de données 5NF directement à partir d'un modèle ORM, sans étapes de normalisation spécifiques.

4
nvogel

La normalisation, en tant que processus, se produit après la modélisation logique et avant le modèle physique. Trop souvent, les gens ignorent le modèle logique et se retrouvent avec un modèle physique possédant des noms amicaux d'affaires. Le modèle logique doit définir les entités et relations de données (généralement confondues avec les contraintes de table), d'où le terme "ER".

Comme les modèles physiques sont souvent abordés en termes de "formes normales", les tables doivent déjà avoir été "normalisées", n'est-ce pas? D'une perspective de conception, le processus de transformation de celui-ci dans un modèle physique est lorsque vous appliquez la normalisation. C'est à ce moment que lorsque les entités deviennent des relations (ou des tableaux) et les relations sont appliquées par des contraintes, en tant que sous-produit du processus de normalisation.

En d'autres termes, votre pensée est correcte :)

1
dba4life