今回は柔軟に対応し、データベースに保存したい連絡先情報をユーザーが決定できるようにしようと考えました。理論的には、たとえば、次を含む単一の行として表示されます。名前、住所、郵便番号、カテゴリ X、Listitems A.
ユーザーが使用できるデータ型を定義する
FieldTypeテーブルの例:
FieldTypeID, FieldTypeName, TableName
1,"Integer","tblContactInt"
2,"String50","tblContactStr50"
...
FieldDefinitionテーブルで自分のフィールドを定義するユーザー:
FieldDefinitionID, FieldTypeID, FieldDefinitionName
11,2,"Name"
12,2,"Address"
13,1,"Age"
最後に、実際の連絡先データをデータ型に応じて別のテーブルに保存します。マスター テーブルには ContactID のみが含まれます
tbl連絡先:
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
質問:次のように、これらのテーブルの内容を 2 つの行で返すことは可能ですか?
ContactID,Name,Address,Age
21,"Person A","Address of person A",NULL
22,"Person B",NULL,27
COALESCE および Temp テーブルの使用を検討しましたが、これが可能かどうか疑問に思っています。たとえそうであっても、データストレージとユーザー定義オプションの利点のためにパフォーマンスを犠牲にしながら、複雑さを追加しているだけかもしれません。
どう思いますか?