Senhores, numa relação many-to-many, uma tabela auxiliar, de junção, é necessária, como nesse exemplo:[code]CREATE TABLE Users
(
IdUser INTEGER(5) PRIMARY KEY,
UserLogin varchar(50) NOT NULL,
UserPassw varchar(50) NOT NULL,
UserName varchar(50) NOT NULL
)
CREATE TABLE UserPermissions
(
idUser INTEGER(5) REFERENCES Users (idUser),
idPermission INTEGER(5) REFERENCES Permissions (idPermission),
PRIMARY KEY (idUser, idPermission)
)[/code]Porém, num relacionamento ONE-TO-MANY, como por exemplo, Nota Fiscal e Itens de Nota Fiscal, uma tabela de junção seria necessária? Se não, como relacionar um único registro na tabela 1 com vários na tabela 2?
ddso, considerando apenas a questão de modelagem e criação manual do banco e tabelas.
Não, a tabela de relacionamento faz justamente essa interface, pois será a “divisora” no N : M em, 1 : N e 1 : M.
Quando se possui uma NF e vários itens, cada um recebe a PK dessa NF como FK, assim, uma NF pode ter vários itens de venda e, estes itens, só pertencem a uma única NF.
No caso de endereço e pessoa, a relação é N : M, pois, uma pessoa pode ter mais de um endereço e um endereço pode ter mais de uma pessoa.
Então, cria-se uma tabela associativa endereco_pessoa, que possuirá, entre outras colunas, a FK da pessoa e a FK do endereco. Perceba que uma pessoa pode ter N registros na tabela endereco_pessoa, por isso, ela passa uma FK para esta tabela, o mesmo ocorre com o endereço, que passa sua PK como FK da tabela endereco_pessoa.