2010-10-13 15 views
0

Données comme le mois de naissance, le jour et l'année, l'âge de l'utilisateur, le sexe/sexe, etc. Devraient-ils être stockés comme texte ou ID basé dans la base de données? ID basé signifie qu'ils auront des valeurs de recherche. L'utilisation est par exemple: l'inscription de l'utilisateur enregistrera l'âge, les profils d'utilisateur auront un âge de partenaire de recherche, etc. ainsi l'âge et d'autres données peuvent être utilisés dans plusieurs endroits. En backend, il y aura de l'analytique qui me pousse à utiliser des tables de recherche pour les petites choses comme le genre qui n'ont que deux ou trois valeurs.Tables de consultation pour l'entrée utilisateur de base?

Répondre

0

Vous voudrez faire référence aux types de données ou à la base de données disponibles. Pour mysql: http://dev.mysql.com/doc/refman/5.0/en/data-types.html

N'utilisez aucun des champs que vous avez mentionnés comme clé primaire. Créez une colonne 'id' ou utilisez le nom d'utilisateur de l'utilisateur.

Voici la base de données pour les champs.

  • birthDate = Date
  • age = tinyint (Techniquement, vous n'avez pas besoin de cela puisque vous pouvez toujours le déterminer en fonction de leur date de naissance et la date actuelle Cela dépend ce que vous faites)
  • gender = ENUM
+0

Je ne veux pas dire le type. Je veux dire les valeurs. L'âge est compris entre 1 et 120. Toutes ces valeurs -> stockons-nous ces données sous forme de champ dans la base de données ou doivent-elles toutes être une table de recherche comme Age_id, Age où chaque ligne est un nombre compris entre 1 et 120? il. Je demande parce que j'ai tout un composant analytique à concevoir, donc le mappage des données entre les tables et le maintien des valeurs std est très très critique à travers le système. Comme je l'ai vu ex où l'année de naissance a une table de recherche aussi pour toutes les années possibles. En même temps, j'ai vu beaucoup de gens qui le stockent sous forme de date/texte. – Karem

+0

@Karem Je pense que ma réponse et la sienne sont essentiellement les mêmes. Pour les champs que vous avez mentionnés, vous devez trouver les types de données appropriés à ce que vous voulez stocker. Un champ de date peut contenir mois, jour et année dans un champ, puis plus tard si vous avez besoin d'un mois, vous pouvez le diviser en utilisant une fonction de base de données. Et l'âge peut être dérivé de la date de naissance, donc le stockage est redondant. –

0

Je ne voudrais pas déranger avec des tables de consultation pour les champs que vous avez mentionnés. Le mois, le jour et l'année de la naissance peuvent tous être encapsulés dans un champ de date unique (avec type de date, pas de texte), puis séparés par des fonctions de base de données si nécessaire. L'âge est juste un nombre, ce qui est tout votre champ d'id sera, donc pas grand-chose à faire une recherche pour cela, sauf si vous voulez limiter la tranche d'âge, auquel cas vous pouvez utiliser une contrainte de vérification au lieu d'une recherche nécessaire pour se limiter à une plage réelle (âge> = 1 et âge < = 20 par exemple). Le sexe/sexe est le seul que je pourrais considérer comme une recherche, mais comme il y a si peu de valeurs possibles, une contrainte de vérification devrait suffire. Oh, et je ne sais pas quel analytique vous utilisez, mais tout logiciel d'analyse digne de ce nom peut produire des domaines de terrain (listes de valeurs uniques dans les champs d'une table), en particulier pour les champs que vous avez mentionnés . Si vous construisez votre propre analytique (pas sûr, en fonction de votre commentaire sur la solution d'un autre poster), vous pouvez facilement faire des requêtes pour faire ce dont vous parlez.