CREATE TABLE ObjectA
(
Id CHAR(10) NOT NULL PRIMARY KEY,
Mode CHAR(10) NOT NULL,
Name CHAR(20) NOT NULL
);
CREATE TABLE ObjectA_Dict
(
Id CHAR(10) NOT NULL REFERENCES ObjectA,
Code CHAR(10) NOT NULL,
PRIMARY KEY(Id, Code)
);
CREATE TABLE ObjectA_DictEntry
(
Id CHAR(10) NOT NULL,
Code CHAR(10) NOT NULL,
FOREIGN KEY(Id, Code) REFERENCES ObjectA_Dict,
Index CHAR(10) NOT NULL,
Value VARCHAR(255) NOT NULL,
PRIMARY KEY(Id, Code, Index)
);
既然你不告訴我們用來識別對象的字符串的組織任何東西,它是很難知道有多大,使他們。如果您願意,您可以決定在表格中使用某種自動分配的整數值;這會改變查詢需要編寫的方式,但可能會更好地處理ORM(對象關係映射)的一些工具。由於您尚未識別出您的目標數據庫系統,因此也不得不留下未說明的內容。在ObjectA_DictEntry
中,您可以將Id
作爲外鍵引用ObjectA
,但這不是必需的。在顯示組合鍵的情況下,您可以僅使用ObjectA_DictEntry
而不必參考其他表格。如果你使用自動分配的值,你有時會被迫做連接。
CREATE TABLE ObjectB
(
SysId CHAR(10) NOT NULL PRIMARY KEY,
Seates CHAR(20) NOT NULL
);
CREATE TABLE ObjectB_List
(
SysId CHAR(10) NOT NULL REFERENCES ObjectB,
Id CHAR(10) NOT NULL REFERENCES ObjectA,
PRIMARY KEY (SysId, Id)
);
這是我認爲你的ObjectB
架構應該看起來像。我認爲你應該已經展示了你認爲應該看起來的樣子;它會改善你的問題。