2013-06-20 2 views
0

Supposons que je veux créer une base de données pour stocker connexion et détails personnels d'un utilisateur alors que je devrais créer une tableDois-je utiliser la clé ou non

Only One table Table User 
Username(varchar255)|User_id(int)|Name(varchar255)|Sex(0,1,2)|DOB(Date)|Password(char64)| 

OU deux tables avec une clé étrangère étrangère

Table User_Login 

    User_id(int)|Username(varchar255)|Password(char64)| 

and table User_Detail 

    User_id(int)|Name(varchar255)|Sex(0,1,2)|DOB(Date)| 
+3

Wha Pensez-vous, et pourquoi? –

+0

Je ne suis pas expert en db donc je poste mon avis dans le commentaire: Si vous avez une relation 1-1, je pense qu'il est inutile de faire une clé étrangère car vous aurez besoin de faire des jointures inutiles. –

+2

si vous voulez soutenir les dossiers historiques des utilisateurs sexes lors de leur transition, entrer dans le programme de protection des témoins et obtenir des dates de naissance multiples, puis certainement utiliser la structure à deux tables. –

Répondre

1

Posez-vous ces questions.

Un utilisateur aura-t-il un ou plusieurs noms d'utilisateur?

Un utilisateur aura-t-il un ou plusieurs mots de passe? Cela inclut les mots de passe précédents si vous souhaitez vérifier les mots de passe uniques sur une période donnée.

Un utilisateur aura-t-il un ou plusieurs noms?

Un utilisateur aura-t-il un ou plusieurs genres?

Un utilisateur aura-t-il une ou plusieurs dates de naissance?

Lorsque la réponse à une question est «un», cette colonne appartient à la table utilisateur.

Lorsque la réponse à une question est «plus d'un», cette colonne appartient à un tableau différent.

Ce processus est appelé la première forme normale de database normalization.

+1

D'après votre réponse, il n'y a jamais de raison pour 1-1 tables, ce qui est nécessaire si vous voulez éviter les colonnes NULL (nécessaire pour les formes normales "supérieures") – landons

+0

@landons: Vous décrivez la 4ème forme normale. Passons le 1er, le 2ème et le 3ème en premier. :-) –

+0

Assez juste;). A été un peu surpris par un commentaire ci-dessus qui a dit que les 1-1 sont inutiles. – landons

0

Je pense qu'il existe deux façons populaires de définir une table, 3NF et BNCF (elles seront bien documentées).

Les règles sont les suivantes:

  • Il devrait y avoir aucune colonne dulicate (facile d'un)
  • Supprimer des colonnes qui ne dépendent pas entièrement de la clé primaire (voir les attributs et si elles ont un sens en position debout seuls alors ils devraient être dans une table séparée (quelque chose comme ça)

Son assez difficile à saisir première fois ils ont donc une lecture de 1NF, 2NF, 3NF et BNCF

Questions connexes