2009-04-15 24 views
0

J'essaie de trier la base de données derrière le site Web de mon entreprise.Confusion de clés RDBMS

Nous traitons avec les sites et les résidents. À l'heure actuelle, la référence du site est incluse dans la table Résidents en tant que clé étrangère, mais, évidemment, ce n'est qu'en 1NF.

Les références de site sont de la forme nnnnn (12345, par exemple). Chaque résident a sa propre référence dans le Site sous la forme nnn (commençant à 001 et se terminant à un maximum de 999).

Le problème est, quand je prends à 2FN:

Site (Référence, Nom, charge)

résidence (SiteReference, ResidentReference,)

résident (référence, Adresse, Nom d'utilisateur, Mot de passe)

La référence de résident wi N'identifier jamais de façon unique un résident, car s'il y a 2 sites, il y aura 2 001. Je ne peux pas utiliser de nom d'utilisateur car ce champ n'est rempli qu'une seule fois (et si!) Ils sont enregistrés pour notre service web. Je présenterais simplement un nouvel ID de numéro de compte pour les résidents, mais il y a quelque chose qui m'agace qu'il y a une solution plus élégante. Quelqu'un peut-il suggérer ce que c'est?

+0

S'il vous plaît expliquer 1NF et 2NF – norbertB

+0

Voir http://en.wikipedia.org/wiki/Database_normalization – Leonidas

Répondre

1

Vous devez "libérer" la référence résidente du site - par ex. faites-en un ResidentID et assurez-vous que chaque ResidentID est globalement unique dans la table Resident. Chaque site doit également avoir un SiteID unique au monde dans la table Site.

Alors et seulement alors, vous serez capable de créer un bon schéma db.

La table de résidence fournira le lien entre les résidents (identifiés uniquement par leur ResidentID) et les sites (encore une fois - uniquement identifiés par leur SiteID).

Marc

+0

C'est ce que je pensais. Merçi pour la confirmation. – Bailz