Je pensais que je serais flexible cette fois-ci et que je laisserais les utilisateurs décider des informations de contact qu'ils souhaitent stocker dans leur base de données. En théorie, il ressemblerait à une seule ligne contenant, par exemple; nom, adresse, code postal, Catégorie X, A. éléments de la listeSQL 2008: Utilisation de tables séparées pour chaque type de données afin de renvoyer une seule ligne
Exemple
FieldType table définissant les types de données disponibles à un utilisateur:
FieldTypeID, FieldTypeName, TableName
1,"Integer","tblContactInt"
2,"String50","tblContactStr50"
...
Un utilisateur le définit ses champs dans le FieldDefinition tableau:
FieldDefinitionID, FieldTypeID, FieldDefinitionName
11,2,"Name"
12,2,"Address"
13,1,"Age"
Enfin nous stockons le réel contacter les données dans des tableaux séparés en fonction de son type de données. table principale, ne contient que le ContactID
tblContact:
ContactID
21
22
tblContactStr50:
ContactStr50ID,ContactID,FieldDefinitionID,ContactStr50Value
31,21,11,"Person A"
32,21,12,"Address of person A"
33,22,11,"Person B"
tblContactInt:
ContactIntID,ContactID,FieldDefinitionID,ContactIntValue
41,22,13,27
Question: Est-il possible de retourner le contenu de ces tables en deux rangées comme ceci:
ContactID,Name,Address,Age
21,"Person A","Address of person A",NULL
22,"Person B",NULL,27
J'ai regardé en utilisant les tables de COALESCE et Temp, se demandant si cela est possible. Même si c'est le cas: peut-être que je ne fais qu'ajouter de la complexité tout en sacrifiant les performances pour le bénéfice de l'option de datastorage et de définition de l'utilisateur.
Qu'en pensez-vous?
Salut A, je me penche vers le garder simple comme vous le suggérez. Je me sentais un peu découragé par la complexité de la requête. Si quelqu'un n'a pas fait comme ça avant il doit y avoir une raison pour laquelle. –
@Thomas C - Ouais, vous êtes instinct avait raison. Si vous vous trouvez avec ce sentiment, c'est un bon signe que vous devriez repenser exactement ce que vous voulez accomplir. – AdaTheDev
En ce moment mon instinct me dit que les colonnes SPARSE est la voie à suivre;) –