MySql数据库之表与表的关系

Posted Firm陈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);

对应视图如下:

关系二:一对多(多对一)
一对多(1:n) 例如:班级和学生,部门和员工,客户和订单,分类和商品
建表原则:
在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键

一个班级对应多个学生。班级表对学生表:一对多。学生表对班级表:多对一

主表的主键作为从表的外键,实现一对多

关系三:多对多
例如: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);

视图如下:

总结:

1.一对一 :主键对主键:通过主键对应,将两张表的两条信息合并为一条数据信息。
2.一对多:主键对外键:主表的主键作为从表的外键,主表的一条信息对应从表的多条数据信息。
3.多对一:外键对主键:从表的外键作为主表的主键,从表的多条数据信息,对应主表的一条数据信息。
4.多对多:中间表给出外键分别对应其他表的主键。两张表的主键,分别对应关联表的外键,从而实现两表多对多。

以上是关于MySql数据库之表与表的关系的主要内容,如果未能解决你的问题,请参考以下文章

重修课程day40(mysql四之表与表关联和表操作)

数据库之 表与表之间的关系

mysql表与表之间建关系

表与表的关系

MySQL数据库学习第六篇表与表之间的关系

Mysql 表与表之间的关系