Я подумал, что на этот раз я буду гибким и позволю пользователям решать, какую контактную информацию вы хотите сохранить в своей базе данных. В теории это выглядело бы как одна строка, содержащая, например; имя, адрес, почтовый индекс, категория X, Listitems A.
* ** 1003 тысяча два * Пример
FieldType таблица, определяющая типы данных, доступные пользователю:
FieldTypeID, FieldTypeName, TableName
1,"Integer","tblContactInt"
2,"String50","tblContactStr50"
...
Пользователь может определить свои поля в таблице FieldDefinition :
FieldDefinitionID, FieldTypeID, FieldDefinitionName
11,2,"Name"
12,2,"Address"
13,1,"Age"
Наконец, мы сохраняем фактические контактные данные в отдельных таблицах в зависимости от их типа данных.
Основная таблица, содержит только 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
Вопрос: Можно ли вернуть содержимое этих таблиц в две строки, например:
ContactID,Name,Address,Age
21,"Person A","Address of person A",NULL
22,"Person B",NULL,27
Я изучил использование таблиц COALESCE и Temp, задаваясь вопросом, возможно ли это вообще. Даже если это так: возможно, я только добавляю сложности, жертвуя производительностью ради выгоды в хранилище данных и опциях определения пользователя.
Что ты думаешь?