我有一個語言映射表,每個條目都有與幾個不同表的外鍵關係的可能性。 處理這種配置的最佳模式是什麼?與多個表之一之間的外鍵關係
表: LanguageMap,表A,表B
這是兩種可能性:
1.查找列方法 - 無外鍵約束:
Create Table LanguageMap (
Id int not null primary key,
Language nvarchar not null,
Value nvarchar not null,
Type nvarchar not null, -- 'TableA', 'TableB', etc.
ForeignTableId int not null -- Is Foreign key to another table dependent on the type of the row.
)
2 。多個外鍵列
個create Table LanguageMap(
Id int not null primary key,
Language nvarchar not null,
Value nvarchar not null,
Type nvarchar not null, -- 'Activity', 'Verb', etc.
TableAId int null,
TableBId int null
)
alter table LanguageMap add constraint FK_LanguageMap_TableA
foreign key (TableAId) references TableA (Id)
alter table LanguageMap add constraint FK_LanguageMap_TableA
foreign key (TableBId) references TableB (Id)
alter table LanguageMap add constraint CK_LanguageMap_OneIsNotNull
check (TableAId is not null or TableBId is not null)
go
alter table LanguageMap add constraint CK_LanguageMap_OneIsNull
check (TableAId is null or TableBId is null)
go
外鍵約束基於Foreign Key for either-or column?
您能否顯示一些樣本數據來闡明存儲在TableA和TableB中的內容?他們是否有相同的模式?此外,您是否只有2個不同的表格可以鏈接到這個問題,還是僅限於2個? – Tanner 2014-09-30 09:01:12
我仍在編寫模式,所以我不確定會有多少個表。但假設模式會有根本的不同,並且至少有四個模式:即TableA,TableB,TableC,TableD。也許更多。爲什麼樣本數據是相關的? – Rafi 2014-09-30 09:20:52
我試圖弄清楚表格中的模式/數據是否相似。 – Tanner 2014-09-30 09:31:35