Des attributs à valeurs multiples dans les bases de données Relationnelles?

Comment bien une idée sont les attributs à valeurs multiples dans une base de données relationnelle quand ils sont à être évoqué en détail?

Laissez-moi vous donner un exemple pour montrer ce que je veux dire. Supposons que j'ai le tableau suivant:

UserID          Attribute1

User1           a,b,c
User2           x,y,z
User3           a,x,y
User4           c,b,z
[a,b,c,x,y,z are to be strings]

Il y a un autre utilisateur User5 à qui j'ai à faire quelques suggestions sur d'autres utilisateurs en fonction de si son Attribute1 correspond à l'un des 4 autres utilisateurs ou non.

[Graphique de bases de données, la tâche aurait été beaucoup plus facile que j'ai pu avoir créé plusieurs nœuds de l'utilisateur respectif à l'aide de la même relation.]

Maintenant, ce tableau est juste un micro-niveau d'abstraction de ce qu'est une base de données réelle va ressembler. Le nombre de lignes dans une table peut-être de centaines de milliers, voire des millions. Aussi, plusieurs valeurs peuvent en fait être beaucoup plus de 3. En dehors de cela, la base de données peut être sous une lourde charge, et dans cette situation, il peut y avoir quelques problèmes.

Sont des attributs à plusieurs valeurs utiles dans de tels cas? Ou est-il une meilleure façon de faire de même? Une façon évidente que je peux penser à est de le stocker en tant que:

UserID          Attribute1

User1           a
User1           b
User1           c
User2           x
User2           y
User2           z
User3           a
User3           x
User3           y
User4           c
User4           b
User4           z

Aucun moyen plus rapide de traiter de telles situations dans les bases de données? Ou il y a des fonctions intégrées de moderne-jour des bases de données à exploiter?

  • Mon intuition dit que le relationnel partie d'une base de données relationnelle est beaucoup plus optimisé que la chaîne de correspondance de la partie 🙂 Bases de données presque toujours meilleures et les plus faciles à optimiser lors de leur forme normalisée, ce qui serait la dernière option (tous les attributs d'étaler sur plusieurs lignes).
  • Bases de données des rapports a l'habitude de faire mieux avec un bien pensé de dénormalisation..
  • "Rapport De Base"??
  • builderau.com.au/architecte/base de données/soa/...
  • presque toujours meilleures et les plus faciles à optimiser lors de leur forme normalisée" -- pas vrai: la plus haute forme normale est 6NF peut entraîner une "explosion" de tables, nécessitant de nombreuses jointures pour écrire le plus simple de requêtes et de les forcer à utiliser des déclencheurs ou autre code de procédure à appliquer inter-contraintes de table, ni de ce qui est bon pour l'optimisation. Aussi une note que si un 5NF conception ne présente pas de redondance, il peut être, en pratique, peu de raison de le prendre à 6NF afin d'éliminer certains non-trivial dépendances.
InformationsquelleAutor c0da | 2011-09-22