关系模型中的3中关系(一对一,一对多,多对多)

关系模型中的3中关系(一对一,一对多,多对多)数据库中 一对一关系 从表的主键既是外键

大家好,欢迎来到IT知识分享网。

数据库中,一对一关系:从表的主键既是外键。

CREATE TABLE hasbend( -- 创建主表 hid INT PRIMARY KEY auto_increment, -- 指定字段 hname VARCHAR(50) ); ALTER TABLE hasbend -- 修改表名 REMOVE TO hasbend; DROP TABLE hasbend; -- 删除表 INSERT INTO hasbend VALUES(NULL, '刘备'); -- 插入数据 INSERT INTO hasbend VALUES(NULL, '关羽'); INSERT INTO hasbend VALUES(NULL, '张飞'); SELECT * FROM hasbend; -- 查询表 -- 用wife的主键作为hasbend的外键(一对一关系) CREATE TABLE wife( wid INT PRIMARY KEY auto_increment, -- wid:1.非空 2.唯一 3.引用hid wname VARCHAR(50), CONSTRAINT fk_wife_hasbend FOREIGN KEY(wid) REFERENCES hasbend(hid) ); INSERT INTO wife VALUES(1, '杨玉环'); INSERT INTO wife VALUES(2, '苏妲己'); INSERT INTO wife VALUES(3, '西施'); SELECT * FROM wife; -- 其中wife表的wid即是主键,又是相对hasbend表的外键 -- wife.wid是主键,不能重复,又是外键,必须来自hasbend.hid. -- 所以如果在wife表中有一条记录的wid为1,那么wife表中的其他记录的wid就不能再是1了,因为他是主键。 -- 同时在hasbend.hid中必须存在1这个值,因为wid是外键,这就完成了一对一关系。

数据库中多对对关系:

在表中建立多对多关系需要使用中间表,即需要三张表,在中间表中使用两个外键,分别引用其他两个表的主键。

CREATE TABLE student( -- 创建学生表 sid INT PRIMARY KEY auto_increment, sname VARCHAR(50) ) CREATE TABLE teacher( -- 创建教师表 tid INT PRIMARY KEY auto_increment, tname VARCHAR(50) ); CREATE TABLE `stu_tea` ( -- 创建关联表 `sid` int, -- 指定student外键 `tid` int, -- 指定teacher外键 CONSTRAINT `fk_student` FOREIGN KEY (`sid`) REFERENCES `student` (`sid`), CONSTRAINT `fk_teacher` FOREIGN KEY (`tid`) REFERENCES `teachar` (`tid`) ); INSERT INTO student VALUES(NULL,'刘德华'); INSERT INTO student VALUES(NULL,'廖朝伟'); INSERT INTO student VALUES(NULL,'周润发'); INSERT INTO student VALUES(NULL,'黎明'); INSERT INTO student VALUES(NULL,'任贤齐'); INSERT INTO teachar VALUES(NULL,'黄飞鸿老师'); INSERT INTO teachar VALUES(NULL,'张三丰老师'); INSERT INTO teachar VALUES(NULL,'叶问老师'); INSERT INTO stu_tea VALUES(1,1); -- 关联两张表中的数据 形成多对多关系 INSERT INTO stu_tea VALUES(2,1); INSERT INTO stu_tea VALUES(3,1); INSERT INTO stu_tea VALUES(4,1); INSERT INTO stu_tea VALUES(5,1); INSERT INTO stu_tea VALUES(2,2); INSERT INTO stu_tea VALUES(3,2); INSERT INTO stu_tea VALUES(4,2); INSERT INTO stu_tea VALUES(3,3); INSERT INTO stu_tea VALUES(4,3); INSERT INTO stu_tea VALUES(5,3); SELECT * FROM stu_tea;

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/102070.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信