我正在尝试为我们拥有的系统构建一个 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
to be 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
with a fixture_set
没有任何分配的fixtures
(不理想)。
我想知道您是否对我如何解决这个问题有任何建议(或者我的理解是错误的)。谢谢