2010-11-09 6 views
1

Je voulais normaliser ma table à tous les 3NF Je crois que tout ce qui suit est dans 3NF parce qu'il n'y a pas de transitivité. S'il vous plaît préciser ce si je me trompenormalisation dans un DB

CLIENTS (custID, custname, custAddress, custDOB, custEmail)
EMPLOYÉS (EMPID, EmpName, empPhone, empAddress, BRANCHNAME)

Les hypothèses sont chacun employé travaille à plusieurs branches et chaque branche a un ou plusieurs employés

Répondre

5

Les hypothèses sont chacun employé travaille à succursales multiples et chaque branche a un ou plusieurs employés

Mais ce n'est pas ce que vous avez modélisé. Dans votre relation, il y a une dépendance fonctionnelle vis-à-vis des branches et des employés. Pour comprendre cela, réfléchissons à la façon dont vous représenteriez un employé qui travaille dans plusieurs branches de votre relation. La seule façon de le faire est qu'il y ait plusieurs lignes avec les mêmes informations d'employé, avec seulement le champ BranchName qui varie. Qu'en est-il d'un employé qui ne travaille pas du tout à une succursale (comme le PDG), alors il n'y a pas de rangée pour cet employé et il disparaît complètement!

Permet de séparer cela.

BRANCHES(branchID, BranchName) 
EMPLOYEES(empID, empName, empPhone, empAddress) 

Mais maintenant, nous avons besoin d'une correspondance de plusieurs à plusieurs entre les deux. La manière préférée de le faire est avec une table de jointure.

BRANCHES_EMPLOYEES(branchID, empID) 
2

Ou vous pourriez avoir une seule table de personne avec une table de rôle qui a montré qui étaient des clients et qui étaient des employés. Cette conception permettrait à quelqu'un d'être à la fois un client et un employé. Pas de répétition des noms, meilleure normalisation. La personne est plusieurs à plusieurs avec un rôle (une personne peut avoir plusieurs rôles, un rôle peut appartenir à plusieurs personnes).

+0

mais est ce qui précède déjà dans 3NF? – aherlambang

+0

@EquinoX: J'en doute sérieusement. Mais nous ne pouvons que deviner car vous n'avez spécifié aucune clé ou dépendance. – sqlvogel

3

"mais est ce qui précède déjà dans 3NF?"

Votre question est sans réponse.

Pour qu'il soit officiellement responsable, vous devez fournir:

  • un COMPLET schéma de votre base de données (par exemple qui modèles/représente aussi le nombre à plusieurs entre les employés et les branches),
  • le complet ensemble de dépendances d'attribut identifiées.

Vous avez donné seulement une partie du premier, et rien de ce dernier.