mysql
主外键是构成表与表关联的唯一途径! 外键是另一张表的主键!例如员工表与部门表之间就存在关联关系,其中员工表中的部门编号字段就是外键,是相对部门表的外键。 我们再来看BBS系统中:用户表(t_user)、分类表(t_section)、帖子表(t_topic)三者之间的关系
创建t_user表,指定uid为主键列:CREATE TABLE t_user( uid INT PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(20) UNIQUE NOT NULL);
创建t_section表,指定sid为主键列,u_id为相对t_user表的uid列的外键:CREATE TABLE t_section( sid INT PRIMARY KEY AUTO_INCREMENT, sname VARCHAR(30), u_id INT, CONSTRAINT fk_t_user FOREIGN KEY(u_id) REFERENCES t_user(uid));
修改t_section表,指定u_id为相对t_user表的uid列的外键:ALTER TABLE t_sectionADD CONSTRAINT fk_t_userFOREIGN KEY(u_id)REFERENCES t_user(uid);修改t_section表,删除u_id的外键约束:ALTER TABLE t_sectionDROP FOREIGN KEY fk_t_user;
一对一:例如t_person表和t_card表,即人和身份证。这种情况需要找出主从关系,即谁是主表,谁是从表。人可以没有身份证,但身份证必须要有人才行,所以人是主表,而身份证是从表。设计从表可以有两种方案: 在t_card表中添加外键列(相对t_user表),并且给外键添加唯一约束; 给t_card表的主键添加外键约束(相对t_user表),即t_card表的主键也是外键。