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数据库之表与表的关系的主要内容,如果未能解决你的问题,请参考以下文章