Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Uma tabela de junção (tabela de associação) tem uma chave primária? relacionamento muitos para muitos


Em uma tabela de junção ou junção pura, todos os campos farão parte da chave primária. Por exemplo, vamos considerar as seguintes tabelas:
CREATE TABLE USERS
  (ID_USER NUMBER PRIMARY KEY,
   FIRST_NAME VARCHAR2(32),
   LAST_NAME VARCHAR2(32));

CREATE TABLE ATTRIBUTES
  (ID_ATTRIBUTE NUMBER PRIMARY KEY,
   ATTRIBUTE_NAME  VARCHAR2(64));

Uma tabela de junção entre estes para permitir que muitos usuários tenham muitos atributos seria
CREATE TABLE USER_ATTRIBUTES
  (ID_USER NUMBER REFERENCES USERS(ID_USER),
   ID_ATTRIBUTE NUMBER REFERENCES ATTRIBUTES(ID_ATTRIBUTE),
   PRIMARY KEY(ID_USER, ID_ATTRIBUTE));

Às vezes, você encontrará a necessidade de adicionar uma coluna não primária a uma tabela de junção, mas acho que isso é relativamente raro.

Compartilhe e curta.