SQL uno a muchos
Estoy tratando de construir un esquema SQL para un sistema donde tenemoschannels
, cada uno con unid
, y uno o masfixtures
. Estoy teniendo dificultades para encontrar una manera de implementar este mapeo de uno a muchos. (es decir, unochannel
demasiadosfixtures
). Estoy usando elMotor de base de datos H2.
No puedo tener una mesa:
id | fixture
----|----------
1 | 1
1 | 2
2 | 3
CREATE TABLE channel(
id INT NOT NULL PRIMARY KEY,
fixture INT NOT NULL
);
... como elPRIMARY KEY
id
debe serUNIQUE
.
Del mismo modo, no puedo mapear de la siguiente manera:
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
);
... ya que esto requieref_set
serUNIQUE
Actualmente lo estoy implementando de la siguiente manera:
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
);
... pero esto significa que podemos tener unachannel
con unfixture_set
la cual no tiene ninguna asignadafixtures
(No es ideal).
Me preguntaba si tenía alguna sugerencia sobre cómo puedo abordar esto (o si mi comprensión es incorrecta). Gracias