创建表赞助中的唯一约束含义

时间:2018-09-06 11:43:14

标签: mysql sql create-table

我想知道UNIQUE约束的含义,它是一个生成的脚本,它涉及赞助,它不是必须的吗?

CONSTRAINT PARRAINAGE_PERSONNE_COMPTE_AK UNIQUE (id_pers_cpt, id_pers_cpt_PERSONNE_COMPTE) 

表格:

CREATE TABLE PARRAINAGE
(
    id_parrainage               Int  Auto_increment  NOT NULL ,
    date                        Date NOT NULL ,
    id_pers_cpt                 Int NOT NULL ,
    id_pers_cpt_PERSONNE_COMPTE Int NOT NULL ,
    id_etab                     Int,
    CONSTRAINT PARRAINAGE_PK PRIMARY KEY (id_parrainage)
   ,CONSTRAINT PARRAINAGE_PERSONNE_COMPTE_FK FOREIGN KEY (id_pers_cpt) REFERENCES PERSONNE_COMPTE(id_pers_cpt)
   ,CONSTRAINT PARRAINAGE_PERSONNE_COMPTE0_FK FOREIGN KEY (id_pers_cpt_PERSONNE_COMPTE) REFERENCES PERSONNE_COMPTE(id_pers_cpt)
   ,CONSTRAINT PARRAINAGE_ETABLISSEMENT1_FK FOREIGN KEY (id_etab) REFERENCES ETABLISSEMENT(id_etab)
   ,CONSTRAINT PARRAINAGE_PERSONNE_COMPTE_AK UNIQUE (id_pers_cpt)

)ENGINE=InnoDB;

2 个答案:

答案 0 :(得分:1)

  • UNIQUE约束确保一列中的所有值都是 不同。

    UNIQUE和PRIMARY KEY约束都为 一列或一组列的唯一性。

    PRIMARY KEY约束自动具有UNIQUE约束。

    但是,每个表可以有许多UNIQUE约束,但是只有一个 每个表的PRIMARY KEY约束。

在您的表id_parrainage主键和id_pers_cpt唯一键中,永远不会重复

id_parrainage列将不允许为空值,并且 id_pers_cpt不允许为空值

答案 1 :(得分:0)

表似乎关联了两个人:

  • id_pers_cpt
  • id_pers_cpt_PERSONNE_COMPTE

约束

CONSTRAINT PARRAINAGE_PERSONNE_COMPTE_AK UNIQUE (id_pers_cpt)

确保id_pers_cpt在表中只能出现一次。因此,id_pers_cpt_PERSONNE_COMPTE可以与许多id_pers_cpt相关,但是id_pers_cpt只能与一个id_pers_cpt_PERSONNE_COMPTE相关。

这使它成为一个pers_cpt表,每个id_pers_cpt有一条记录。如果您想允许一个id_pers_cpt与多个id_pers_cpt_PERSONNE_COMPTE相关,那么您需要使用前面提到的约束:

CONSTRAINT PARRAINAGE_PERSONNE_COMPTE_AK UNIQUE (id_pers_cpt, id_pers_cpt_PERSONNE_COMPTE)