开发者学堂课程【Servlet 入门:一对一关系】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/36/detail/814
一对一关系
内容介绍
一、一对一关系
一、一对一关系
数据库一对一关系
在表中建立一对一关系比较特殊,需要让其中一张表的主键,即是主键又是外键。create table husband(
hid int PRIMARY KEY,
…
);
create table wife(
wid int PRIMARY KEY,
ADD CONSTRAINT fk_wife_wid FOREIGN KEY(wid) REFERENCES husband(hid)
其中 wife 表的 yid 即是主键,又是相对 husband 表的外键!
husband.hid 是主键,不能重复!
wife.wid 是主键,不能重复,又是外键,必须来自 husband.hid。
所以如果在 wife 表中有一条记录的 wid 为1,那么 wife 表中的其他记录的 wid 就不能再是1了,因为它是主键;
同时在 husband.hid 中必须存在1这个值,因为 wid 是外键。这就完成了一对一关系。
以 hasband 和 wife 举例
CREATE TRBLE hasband(
hid INT PRIMARY KEY AUTO_INCREMENT,
hname VARCHAR(50)
);
ALTER TABIE hashand
RENAME TO hasband
INSERT INTO hasband VALUES (NULL,'
刘备');
INSERT INTO hasband VALUES (NULL,'
关羽');
INSERT INTO hasband VALUES (NULL,'张飞');
SELECT * FROM hasband
CREATE TABLE wife(
W1f INT PRIMARY KEY AUTO_INCREMENT,
wname VARCHAR(50),
CONSTRAINT fk_wife_hasband FOREIGN KEY(wid) REFERENCES hasband(hid)
);
/
*
wid:
1.
非空
2.
唯一
3.
引用hid
*/
INSERT INTO wife VALUES(1,'
杨贵妃');
INSERT INTO wife VALUES(2,'妲己');
SELECT * FROM wife;