MySql数据库之表与表的关系

关系一:一对一

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

   Table Data:

                                                                                 

    代码如下:

    

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);

    对应视图如下:

    

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

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

    Table Data:

                                                                                   

    代码如下:

    

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);

视图如下:


关系三:多对多

    例如: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);

    视图如下:

    

  • 6
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值