Question

Qu'est-ce qu'un baiser (Keep it Simple, Stupid) façon de se rappeler quelle forme normale Boyce-Codd est et comment prendre une table et non normalisée FNBC il?

Wikipédia d 'info :. Pas très utile pour moi

Était-ce utile?

La solution

La définition de Chris date est en fait assez bien, aussi longtemps que vous comprenez ce qu'il veut dire:

Chaque attribut

Vos données doivent être divisés en attributs séparés, distincts / colonnes / valeurs qui ne dépendent pas d'autres attributs. Votre nom complet est un attribut. Votre date de naissance est un attribut. Votre âge n'est pas un attribut, cela dépend de la date qui ne fait pas partie de votre date de naissance.

doit représenter un fait

Chaque attribut est un fait, pas une collection de faits. Le changement d'un bit dans un attribut change tout le sens. Votre date de naissance est un fait. Votre nom complet un fait? Eh bien, dans certains cas, il est, parce que si vous changez le nom de votre nom complet est différent, non? Mais à un généalogiste vous avez un nom de famille et un nom de famille, et si vous changez le nom de votre nom de famille ne change pas, donc ils sont faits distincts.

sur la clé,

Un attribut est spécial, il est une clé. La clé est un attribut qui doit être unique pour toutes les informations dans vos données et ne doit jamais changer. Votre nom complet est pas une clé, car il peut changer. Votre numéro d'assurance sociale est pas une clé parce qu'ils sont réutilisés. Votre date de naissance est en plus SSN pas une clé, même si la combinaison ne peut jamais être réutilisé, parce qu'un attribut ne peut pas être une combinaison de deux faits. Un GUID est une clé. Un numéro d'incrémenter et de ne jamais réutiliser est une clé.

la clé entière,

La clé seule doit être suffisante [ et nécessaire !] Pour identifier vos valeurs; vous ne pouvez pas avoir les mêmes données représentées par des clés différentes, ni un sous-ensemble des colonnes clés suffisantes pour identifier le fait. Supposons que vous ayez un carnet d'adresses avec une clé GUID, le nom et les valeurs d'adresse. Il est OK pour avoir le même nom apparaissant deux fois avec des clés différentes si elles représentent des personnes différentes et ne sont pas les « mêmes données ». Si Mary Jones en comptabilité change son nom à Marie Smith, Mary Jones dans les ventes ne change pas son nom aussi bien. D'autre part, si Mary Smith et John Smith ont la même adresse de la rue et il est vraiment au même endroit, ce n'est pas autorisé. Vous devez créer une nouvelle paire clé / valeur à l'adresse de la rue et une nouvelle clé.

Vous n'êtes pas non plus autorisé à utiliser la clé pour cette nouvelle adresse de rue unique en tant que valeur dans le carnet d'adresses depuis maintenant la même clé d'adresse de la rue serait représentée deux fois. Au lieu de cela, vous devez faire une troisième paire clé / valeur avec des valeurs de la clé du carnet d'adresses et la clé d'adresse de la rue; vous trouverez l'adresse de la rue d'une personne en faisant correspondre la clé de leur livre et la clé d'adresse dans ce groupe de valeurs.

et rien que la touche

Il doit y avoir rien d'autre que la clé qui identifie vos valeurs. Par exemple, si vous êtes autorisé une adresse de « The Taj Mahal » (en supposant qu'il n'y a qu'une seule) vous n'êtes pas autorisé une valeur de la ville dans le même dossier, car si vous connaissez l'adresse que vous connaîtriez aussi la ville. Cela permettrait également d'ouvrir la possibilité d'y être plus d'un Taj Mahal dans une ville différente. , Vous avez au lieu de créer à nouveau une clé secondaire d'emplacement avec des valeurs uniques comme le Taj, la Maison Blanche à Washington DC, et ainsi de suite, et leurs villes. Ou interdire « adresses » qui sont propres à une ville.

Aidez-moi donc, Codd.

Autres conseils

Voici quelques extraits utiles de la page Wikipedia sur Troisième forme normale :

Bill Kent définit la troisième forme normale de cette façon:

  

Chaque attribut non-clé « doit fournir   un fait sur la clé, la clé entière,   et rien que la clé. "

     

Exiger que les attributs non-clés soient   dépendant de « l'ensemble des clés » assure   une table qui est en 2NF; plus loin   exigeant que les attributs non-clés soient   dépendant « rien que la touche »   veille à ce que la table est en 3NF.

Chris Date d'adaptation de la mnémotechnique pour définir la forme normale Boyce-Codd Kent:

  

"Chaque attribut doit représenter un fait   sur la clé, la clé entière, et   rien que la clé. » Ici, la   exigence concerne tous les   attribut dans la table, pas seulement   attributs non-clés.

entre en jeu quand une table a plusieurs clés de composé candidat, et un attribut dans une des clés candidats a une dépendance à l'égard d'une partie d'une autre clé candidate. Troisième forme normale n'interdirait pas cela, car il exclut les attributs clés. Mais BCNF applique la règle aux attributs clés.

En ce qui concerne la façon de faire une table satisfaire BCNF, vous devez représenter la dépendance supplémentaire, avec un autre attribut et éventuellement par des attributs division dans une autre table.

I googlé « Boyce Codd forme normale » et après wikipedia c'est le deuxième résultat. Mon manuel donne une définition très simple en termes de systèmes de gestion de bases de données relationnelles:

  

Le côté gauche de chaque FD non négligeable doit être superkey.

-. "Les systèmes de base de données The Complete Book" de Garcia-Molina, Ullman et Widom

La meilleure réponse informelle que j'ai lu est que, dans BCNF, chaque « flèche » dans chaque dépendance fonctionnelle est une « flèche » sur une clé candidate. Je ne me rappelle pas la source, mais il était probablement quelque chose Chris a écrit date.

Fondamentalement, Boyce-Codd est "cinquième forme normale". Il est visuellement reconnaissable par l'existence des « entités attributifs » dans le modèle de données, pour des choses comme les types (par exemple, des rôles, le statut, l'état du processus, type d'emplacement, de type téléphone, etc.). Les entités attributives (sous-sous-types) sont des listes d'ensembles finis de valeurs qui catégorisent en outre une entité de niveau de classe. Ainsi, vous pouvez avoir un type de téléphone ( « mobile », « bureau », « VOIP ») de type de compte e-mail ( « d'affaires », « personnel », « jeu »), le rôle (chef de projet, modeleur de données, super modèle), etc. . Un autre indice morphologique est l'existence de super-types, (aka. Master-classes, super-classes, les méta-entités) telles que les Parties (sous-types étant entreprise, personne, etc.).

Il est essentiellement Taxonomy gone wild (..no la vidéo est pas excitant) au niveau atomique ou feuille; voir le commentaire de Bill Karwin ci-dessus pour une explication plus technique.

modèles de niveau Boyce-Codd sont essentiellement des modèles logiques très détaillés, dérivés de plus simplistes modèles conceptuels à base d'affaires. ** Ils ne sont généralement pas mis en œuvre ver Batim dans le modèle physique, car l'optimisation de PDM pour la performance (ou la simplicité fonctionnelle) peut entraîner les super-types et entités attributives étant gérées comme des listes déroulantes Uis, ou derrière la logique des scènes dans l'application, ou des contraintes de bases de données et des méthodes pour appliquer l'intégrité référentielle. (À savoir, ils peuvent se retrouver sous forme de tables de consultation dans le schéma de PDM, ou ils peuvent être manipulés par le code et ne sont pas représentés dans la base de données).

Alors - pourquoi les faire si elles ne peuvent pas se retrouver dans le PDM? Pour la même raison que vous construisez un bon modèle 3NF avant de « optimiser », de sorte que la structure de base de données reflète le monde réel et est donc plus stable que les bidouilles typiques que nous héritons et doivent faire des actes héroïques pour faire le travail que nos affaires / clients l'évolution des besoins.

Souvent, il est plus facile d'écouter votre tube digestif et cela viendra naturellement. D'une manière générale, si vous rencontrez 3NF vous avez rencontré BCNF. Cela ne couvre pas une analyse détaillée d'un ERD ou avoir des exemples, mais il y a treize règles selon Codd. Je trouve préférable de suivre ces règles mais rappelez-vous toujours qu'il n'y a pas une bonne façon de faire les choses afin de les suivre sans serrer. Donc, en ce qui concerne le SGBDR, voici les règles:

http://www.87android.com / 12-règles-de-base de données modèle relationnel par Codd /

Cela peut ne pas répondre directement à la question, mais si vous demandez comment se rendre à FNBC ou un moyen facile de se rappeler alors vous ne comprenez pas la normalisation assez bien. C'est sans problème cependant. bases de données relationnelles prennent de nombreuses formes et très peu sont bien faites. La meilleure chose que vous pouvez faire est de savoir ce que cela signifie d'être relationnel, suivez les règles ci-dessus, et ne vous inquiétez pas sur le niveau de la normalisation. Le processus de normalisation élimine la duplication des données. Chaque niveau davantage en se déplaçant dans la migration des dépendances fonctionnelles. Gardez cela à l'esprit et vous serez très bien, votre instinct et l'intelligence feront le reste.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top