2013-05-10 5 views
1

Je suppose que cette question est assez basique, mais ceux qui sont les plus difficiles.SET() ou S'il vous plaît suggérer un design approprié

Alors disons que je veux créer une table sur les détails du personnel de la personne, et disons autre que des informations de base comme le nom, l'adresse, contactno. etc. J'ai également besoin de stocker si la personne est Investor, Mentor, HR Guy, ALumni, partenaire, donateur ou fournisseur de services. Il peut être dans plus de 1 domaines énumérés ci-dessus.

Est-il recommandé d'utiliser le champ set() avec les 7 options? semble la façon logique de le faire mais j'ai lu que les champs set() ne sont pas amicaux avec les recherches dans les grandes bases de données.

Les autres options que j'avais à l'esprit sont:

1.Une 7 colonnes booléennes supplémentaires pour chaque champ dans la table d'origine.

Ce qui serait le meilleur moyen, étant donné que la base de données/table serait grande?

Plz suggère une bonne sortie !! merci d'avance

Répondre

2

Normaliser.

Une table pour contenir les différents types, puis, comme une personne peut être zéro ou plus nombre de type, une autre table pour les coller ensemble. Considérons un design quelque chose comme ça;

person: 
-------------- 
id int 
name varchar 
email varchar 
... 


type 
-------------- 
id int 
name varchar 


person_type 
-------------- 
person_id 
type_id 
+0

Merci beaucoup @Hank. Mais êtes-vous sûr que cela n'affectera pas la vitesse de recherche car j'aurai besoin de chercher principalement sur la base de type_id ... et cela prendrait trop de temps pour obtenir les informations de base sur la personne telle qu'elle serait jointe .. – user2353615

+0

both.person_id et type.type_id devrait être des clés primaires et aussi se joindre à des clés primaires, c'est un peu ce que fait une base de données, et ils le font vraiment bien. – hank

+0

Merci Hank ... c'était vraiment génial de m'aider !!! – user2353615

Questions connexes