Alguém pode explicar como implementar relacionamentos um para um, um para muitos e muitos para muitos enquanto cria tabelas com alguns exemplos?
sql
oracle
database-design
arsenal
fonte
fonte
Respostas:
Um para um: use uma chave estrangeira para a tabela referenciada:
Você também deve colocar uma restrição exclusiva na coluna de chave estrangeira (
addess.student_id
) para impedir que várias linhas na tabela filha (address
) se relacionem com a mesma linha na tabela referenciada (student
).Um para muitos : use uma chave estrangeira no lado muitos do relacionamento, vinculando de volta ao lado "um":
Muitos para muitos : use uma tabela de junção ( exemplo ):
Consultas de exemplo:
fonte
student
dadoaddress
.student_classes
linha deve ter apenas um relacionamento individual. SestudentA
estiver emclassA
eclassB
, deve haver duas linhasstudent_classes
, uma para qual relacionamento.Aqui estão alguns exemplos reais dos tipos de relacionamentos:
Um para um (1: 1)
Um relacionamento é individual se e somente se um registro da tabela A estiver relacionado a um máximo de um registro na tabela B.
Para estabelecer um relacionamento um para um, a chave primária da tabela B (sem registro órfão) deve ser a chave secundária da tabela A (com registros órfãos).
Por exemplo:
Um para muitos (1: M)
Um relacionamento é um para muitos se, e somente se, um registro da tabela A estiver relacionado a um ou mais registros na tabela B. No entanto, um registro na tabela B não pode estar relacionado a mais de um registro na tabela A.
Para estabelecer um relacionamento um para muitos, a chave primária da tabela A (a tabela "um") deve ser a chave secundária da tabela B (a tabela "muitos").
Por exemplo:
Muitos-para-muitos (M: M)
Um relacionamento é muitos para muitos se e somente se um registro da tabela A estiver relacionado a um ou mais registros na tabela B e vice-versa.
Para estabelecer um relacionamento muitos para muitos, crie uma terceira tabela chamada "ClassStudentRelation", que terá as chaves primárias da tabela A e da tabela B.
fonte
Um para muitos
O relacionamento de uma para muitas tabelas é o seguinte:
Em um sistema de banco de dados relacional, um relacionamento de tabela um para muitos vincula duas tabelas com base em uma
Foreign Key
coluna no filho que faz referência àPrimary Key
linha da tabela pai.No diagrama da tabela acima, a
post_id
coluna dapost_comment
tabela possui umForeign Key
relacionamento com a coluna dopost
ID da tabelaPrimary Key
:Um a um
O relacionamento da tabela um para um é o seguinte:
Em um sistema de banco de dados relacional, um relacionamento de tabela um para um vincula duas tabelas com base em uma
Primary Key
coluna no filho, que também é umaForeign Key
referência àPrimary Key
linha da tabela pai.Portanto, podemos dizer que a tabela filha compartilha a
Primary Key
com a tabela pai.No diagrama da tabela acima, a
id
coluna dapost_details
tabela também possui umForeign Key
relacionamento com a coluna dapost
tabelaid
Primary Key
:Muitos para muitos
O relacionamento de tabela muitos para muitos é o seguinte:
Em um sistema de banco de dados relacional, um relacionamento de tabela muitos para muitos vincula duas tabelas pai por meio de uma tabela filha que contém duas
Foreign Key
colunas referenciando asPrimary Key
colunas das duas tabelas pai.No diagrama da tabela acima, a
post_id
coluna dapost_tag
tabela também possui umForeign Key
relacionamento com a coluna dopost
ID da tabelaPrimary Key
:E, a
tag_id
coluna napost_tag
tabela possui umForeign Key
relacionamento com a coluna detag
identificação da tabelaPrimary Key
:fonte
Relação um a um (1-1): é a relação entre chave primária e chave estrangeira (chave primária relacionada à chave estrangeira apenas um registro). esse é um relacionamento individual.
Relacionamento um para muitos (1-M): também é um relacionamento entre relacionamentos de chaves primárias e estrangeiras, mas aqui a chave primária relacionada a vários registros (por exemplo, a Tabela A possui informações sobre o livro e a Tabela B possui vários editores de um livro).
Muitos para muitos (MM): muitos para muitos inclui duas dimensões, explicadas completamente como abaixo com a amostra.
fonte