【发布时间】:2013-05-16 15:28:02
【问题描述】:
我正在尝试为我们拥有channels 的系统构建一个SQL 模式,每个系统都有一个id,以及一个或多个fixtures。我很难找到实现这种一对多映射的方法。 (即一个channel 到多个fixtures)。我正在使用H2 database engine。
我不能有一张桌子:
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 和一个没有分配任何fixtures 的fixture_set(不理想)。
我想知道您是否对我如何处理这个问题有任何建议(或者我的理解有误)。谢谢
【问题讨论】:
标签: sql database foreign-keys h2