我正在尝试为我们拥有的系统构建一个 SQL 模式channels
,每个系统都有一个id
,一个或多个fixtures
。我很难找到实现这种一对多映射的方法。(即channel
一对多fixtures
)。我正在使用H2 数据库引擎。
我不能有一张桌子:
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
任何分配的 a fixtures
(不理想)。
我想知道你是否对我如何处理这个有任何建议(或者我的理解是错误的)。谢谢