2011-07-31 4 views
0

J'essaie de décomposer plusieurs tables en BCNF. Je crois que le premier est décomposé correctement, mais je ne sais pas si les autres peuvent être décomposés. Toute aide est appréciéeBCNF Decomposition (Design de base de données)

**make(id, name, est, founder, city, state)** 

id->name; 
name->est, city, state, founder; 
city->state 

New Relations: [Key(id),name], [Key(name),est,city,state,founder], [Key(city),state] 

**model(id, makeId, name, year, category)** 

id->makeId, name; 
name->year, category (not superkey, but can't really decompose) 

**features(id, modelId, abs, tpms, sidebags, drl)** 

id->modelID, abs, tpms, sidebags, drl 

**user(id, name, pass, first, last, phone, isAdmin)** 

id->name, pass, isAdmin; name->first, last, phone 

**selling(id, price, modelId, mileage, userId)** 

id->price, modelId, mileage, userID 

Répondre

1

BCNF est facile: il suffit que toutes les dépendances entre les ensembles d'attributs dans une relation unique sont des dépendances sur un superkey de la relation. Votre premier est proche, mais la seconde relation doit omettre "état". Souvent, les gens s'arrêtent à 3NF car toutes les relations avec les FD n'ont pas de décompositions BCNF préservant la dépendance. Avez-vous besoin d'aide pour décomposer les autres relations? Je vais vous aider, si vous en avez besoin.

Modifier: Aide sur les autres relations.

La vente et les fonctionnalités sont très bien. Les modèles et les utilisateurs doivent être divisés sur le nom afin d'être en BCNF; vous indiquez que ce n'est pas quelque chose que vous pouvez faire pour les modèles. Pourquoi? Nom implique le truc sur la droite de la flèche, non?

+0

Oui, si vous pouviez m'aider à décomposer les autres, ce serait très apprécié. J'apprends toujours comment appliquer l'algorithme, alors voir comment le faire dans ces cas serait d'une grande aide. – Leif

+0

LE lhs doit être une super-clé, non? Si je l'ai décomposé comme: [Key (id), makeId, name] [Clé (nom), année, catégorie] serait-il correct? Merci pour l'aide. – Leif

+0

Gardez le nom dans le premier, oui. La dépendance dans une relation donnée doit être sur une super-clé de cette relation; ce super-utilisateur ne doit pas être une super-clé de l'original. La décomposition que vous suggérez dans le commentaire ci-dessus est une décomposition BCNF correcte, sans perte de dépendance et sans perte de dépendance. – Patrick87