Um-para-muitos do SQL
Eu estou tentando construir um esquema SQL para um sistema onde temoschannels
, cada um com umid
e um ou maisfixtures
. Estou com dificuldade em encontrar uma maneira de implementar esse mapeamento de um para muitos. (ou seja, umchannel
para muitosfixtures
). Estou usando oMecanismo de banco de dados H2.
Eu não posso ter uma mesa:
id | fixture
----|----------
1 | 1
1 | 2
2 | 3
CREATE TABLE channel(
id INT NOT NULL PRIMARY KEY,
fixture INT NOT NULL
);
... Enquanto oPRIMARY KEY
id
devemos serUNIQUE
.
Da mesma forma, não consigo mapear como segue:
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
);
... como isso é necessáriof_set
ser estarUNIQUE
Atualmente estou implementando da seguinte maneira:
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
);
... mas isso significa que podemos ter umchannel
com umfixture_set
que não tem nenhum atribuídofixtures
(Não é ideal).
Eu queria saber se você tinha alguma sugestão de como eu posso abordar isso (ou onde meu entendimento está errado). obrigado