我想爲我們有channels
的系統建立一個SQL模式,每個系統都有一個id
和一個或多個fixtures
。我很難找到實現這種一對多映射的方法。 (即,一個channel
到許多fixtures
)。我正在使用H2 database engine。SQL一對多
我不能有一個表:
id | fixture
----|----------
1 | 1
1 | 2
2 | 3
CREATE TABLE channel(
id INT NOT NULL PRIMARY KEY,
fixture INT NOT NULL
);
...爲PRIMARY KEY
id
必須是UNIQUE
。
同樣,我不能圖如下:
CREATE TABLE channel(
id INT NOT NULL PRIMARY KEY,
f_set INT NOT NULL REFERENCES fixtures(f_set)
);
CREATE TABLE fixtures(
id INT NOT NULL PRIMARY KEY,
f_set INT NOT NULL
);
...因爲這需要f_set
是UNIQUE
我目前正在實施它,如下所示:
CREATE TABLE channel(
id INT NOT NULL PRIMARY KEY,
f_set INT NOT NULL REFERENCES fixture_set(id)
);
CREATE TABLE fixtures(
id INT NOT NULL PRIMARY KEY,
f_set INT NOT NULL REFERENCES fixture_set(id)
);
CREATE TABLE fixture_set(
id INT NOT NULL PRIMARY KEY
);
.. 。但是這意味着我們可以有一個channel
與fixture_set
不具有任何分配fixtures
(不理想)。
如果您有關於如何我可能接近這個(或在我的理解是錯誤的)任何建議,我想知道。由於
謝謝您的回答。有沒有辦法保證'channel'至少有一個**夾具? – ChrisSSocha
@Chris不在H2中。你將如何創建一個「頻道」?你首先必須創建一個'fixture'。但是,如果不先創建「通道」,則無法創建「燈具」...同樣用於刪除條目。有些數據庫支持事務提交時檢查的約束,但不支持H2。 –