0

J'ai une question théorique. J'ai la relation R (A, B, C, D) et les dépendances B-> C, B-> D. Comment puis-je vérifier si BCNF est présent et comment le décomposer en BCNF? La question vient d'un livre. Je comprends les fondamentaux mais avec celui-ci je n'ai pas réussi, quelqu'un peut-il m'expliquer s'il vous plaît?Base de données Relations normalisation à BCNF

+2

De quel livre apprenez-vous le BCNF, comment est-il possible d'identifier le BCNF, quel est l'algorithme pour le BCNF et où avez-vous été jusqu'à présent avec cet exercice et où êtes-vous bloqué? Vous demandez effectivement un chapitre d'un manuel. Il y a beaucoup de livres et de diapositives en ligne. S'il vous plaît, soyez précis. – philipxy

Répondre

0

D'abord calculer l'ensemble de fermeture de R.

  • {A} = {A}
  • {B} = {B, C, D}
  • {C} = {C}
  • {D} = {D}
  • {A, B} = {A, B, C, D} (qui est une clé pour R donc nous ne devons plus calculer aucun ensemble de fermeture contenant la clé AB
  • {A, C} = { A, C}
  • {A, D} = {A, D}
  • {B, C} = {B, C, D}
  • {B, D} = {B, C, D}
  • {C, D} = {C, D}
  • {A , C, D} = {A, B, C, D} (aussi une clé car elle contient tous les attributs de R dans sa fermeture).
  • {B, C, D} = {B, C, D}

ensembles comme {A, B, C} n'a pas été calculée comme étant {A, B} (clé) est un sous-ensemble. Ensuite, nous devons déterminer les nouvelles FD (dépendances fonctionnelles). Je ne vais pas expliquer le processus car je suis sûr que votre manuel le décrira. Les dépendances sont:

  • B -> C
  • B -> D
  • AB -> C
  • AB -> D
  • BC -> D
  • BD -> C
  • ACD -> B

maintenant, chaque FD qui ne dispose pas d'un superkey sur elle est laissée s ide, est une violation BCNF. Nous pouvons utiliser de telles violations pour diviser la relation R. Nos FD qui violent sont B -> C, B -> D, BC -> D et BD -> C. Nous pouvons diviser la relation sur les FD B -> C. La première "moitié" de la relation divisée contiendra tous les éléments de la fermeture de l'attribut sur le côté gauche de la FD, dans ce cas l'attribut B. Donc, notre première relation sera R11(B, C, D). Notre deuxième relation contiendra le côté gauche du FD (B) et les attributs ne sont pas dans la fermeture de B, qui est l'attribut A. Nous obtenons donc la relation R12(A,B). Voyons maintenant: la relation R12 est certainement dans BCNF car elle ne contient que deux attributs. Maintenant, vérifions la relation R11. Une nouvelle clé pour cette relation est B car la fermeture de B contient tous les attributs de R11. Il n'y a pas de FD qui sont valides sur la relation R11 causant des violations plus car ils contiennent tous B dans leur côté gauche. Donc les deux relations sont en BCNF. J'espère que c'était assez clair pour toi.

Editer: seulement maintenant remarqué ce message il y a 4 mois ...Eh bien j'espère que c'est encore utile (peut-être pour les autres membres qui cherchent le sujet).