SQL jeden do wielu
Próbuję zbudować schemat SQL dla systemu, w którym mamychannels
, każdy zid
i jeden lub więcejfixtures
. Mam problem ze znalezieniem sposobu na wdrożenie tego mapowania jeden-do-wielu. (tj. jedenchannel
za dużofixtures
). UżywamSilnik bazy danych H2.
Nie mogę mieć stołu:
id | fixture
----|----------
1 | 1
1 | 2
2 | 3
CREATE TABLE channel(
id INT NOT NULL PRIMARY KEY,
fixture INT NOT NULL
);
... jakoPRIMARY KEY
id
musi byćUNIQUE
.
Podobnie nie mogę mapować w następujący sposób:
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
);
... jak to wymaganef_set
byćUNIQUE
Obecnie wdrażam go w następujący sposób:
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
);
... ale to oznacza, że możemy miećchannel
zfixture_set
który nie ma żadnego przypisanegofixtures
(Nieidealny).
Zastanawiałem się, czy masz jakieś sugestie, jak mogę się do tego zbliżyć (lub gdzie moje zrozumienie jest błędne). Dzięki