mysql数据库和表的关系_MySql数据库之表与表的关系

关系一:一对一

例如:QQ表与QQDetail表,我们首先要找到主从关系,从而确定外键约束。在这两张表中,QQ表有两个属性(qqid与password);另一张表为QQDetail表有三个属性(qqid,name与address)。我们可以认为,一个QQ号只能对应一份含具体信息的表格。这两个表中,QQ表的qqid和QQDetail表的qqid都设为主键约束(数据唯一且不能不为null)。

Table Data:

ef737933f993cfbbd68f7b4abe76a5bc.png                                                                             

b134a36016c786e53017c9faaece891d.png

代码如下:

CREATE TABLE QQ(

qqid INT PRIMARY KEY,

PASSWORD VARCHAR(50)

);

CREATE TABLE QQDetail(

qqid INT PRIMARY KEY,

NAME VARCHAR(50),

address VARCHAR(50)

);

ALTER TABLE QQDetail ADD CONSTRAINT fk_QQ_QQDetail FOREIGN KEY(qqid) REFERENCES QQ(qqid);

对应视图如下:

d1fcee4ee65792a6c740cd4aab88a699.png

关系二:一对多(多对一)

最为常见的就是一对多!一对多和多对一,要看你从哪个角度出发。stu1为学生表,score1为成绩表。stu1和score1的关系,从stu1来看就是一对多,而从score1的角度来看就是多对一!这种情况都是在多方创建外键(此案例中score1创建外键)!

Table Data:

8ec5870d5277cc522cbc7a3df1ea1c82.png                                                                               

904e85d4acf75bb246132c524bba0140.png

代码如下:

CREATE TABLE stu1(

sid VARCHAR(10) PRIMARY KEY,

sname VARCHAR(50) NOT NULL

);

CREATE TABLE score1(

sid VARCHAR(10),

score DOUBLE,

courseid INT

);

ALTER TABLE score1 ADD CONSTRAINT fk_stu1_score1 FOREIGN KEY (sid) REFERENCES stu1(sid);

视图如下:

47e155e2fbef69aef015e74ce93a8c88.png

关系三:多对多

例如:stu2和teacher表,即一个学生可以有多个老师,而一个老师也可以有多个学生。这种情况通常需要创建中间表来处理多对多关系。例如再创建一张表tea_stu2_real表,给出两个外键,一个相对stu2表的外键,另一个相对teacher表的外键。

代码如下:CREATE TABLE teacher (

tid INT PRIMARY KEY,

tname VARCHAR(20)

);

CREATE TABLE stu2(

sid INT PRIMARY KEY,

sname VARCHAR(20)

);

CREATE TABLE tea_stu2_real(

tid INT,

sid INT

);

ALTER TABLE tea_stu2_real ADD CONSTRAINT fk_tid FOREIGN KEY(tid) REFERENCES teacher(tid);

ALTER TABLE tea_stu2_real ADD CONSTRAINT fk_sid FOREIGN KEY(sid) REFERENCES stu2(sid);

视图如下:

086beb57b622a8b0d3ef5e3dff8aaf82.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值