数据库条款关系和关系描述表中数据连接的方式。一种关系型数据库由一系列由特定密钥链接的两个或多个表组成。关系数据库与非结构化数据库的不同之处不同,这些数据库在大规模的大数据举措中更为常见。关系数据库往往需要有关如何定义表的严格规则,以及表中构成表之间的有效关系。
关系允许您在强大的方式描述不同数据库表之间的连接。然后可以利用这些关系来执行强大的跨表查询,称为连接。
数据库关系的类型
有三种类型的数据库关系,每个根据关系中涉及的表行的数量命名。这三种关系类型中的每一个都存在于两个表之间。
- 一对一的关系当第一个表中的每个条目具有一个,只有一个,第二个表中的对应物时出现。一对一的关系很少使用,因为将所有信息放入单个表中通常更有效。某些数据库设计人员通过创建包含来自另一个表的数据子集的表来利用这种关系。
- 一对多关系是最常见的数据库关系类型。当表A中的每个记录对应于表B中的一个或多个记录时,但表B中的每个记录对应于表A中的一个记录。例如,教师表与小学中的学生表之间的关系数据库可能是一个多对多的关系,因为每个学生只有一位老师,但每个老师都有几个学生。这种一对多设计有助于消除复制数据。
- 多对多的关系当表A中的每个记录对应于表B中的一个或多个记录时,表B中的每个记录对应于表A中的一个或多个记录。例如,教师和课程表之间的关系可能很多 -对于许多人来说,因为每个教师可以指示多个课程,并且每个课程可能有多个教练。
自我引用关系:一个特例
当仅涉及一个表时,会发生自引用关系。一个常见的例子是员工表,其中包含有关每个员工的主管的信息。每个主管也是员工,并有一个主管。在这种情况下,由于每个员工都有一个主管,并且每个员工都有一个主管,但每个主管都可能拥有多个员工的一对多的自我引用关系。
与外键创建关系
您在表格之间创建关系指定外键。此密钥介绍关系数据库表格相关的数据库。在许多情况下,表A中的列包含由表B引用的主键。
再次考虑教师和学生表的例子。教师表包含ID,名称和课程列:
教师
教学 |
老师的名字 | 课程 |
001 | John Doe. |
英语 |
002 | 简施胶 |
数学 |
学生表包含一个ID,名称和外键列:
学生们
学生卡 | 学生姓名 |
教师_FK. |
0200. | 洛厄尔史密斯 |
001 |
0201. | 布莱恩短 |
001 |
0202. | Corky Mendez. |
002 |
0203. | 莫妮卡琼斯 |
001 |
列教师_FK.在学生表参考主要键值教师桌上的教练。通常,数据库设计人员在列名称中使用“PK”或“FK”以轻松识别主键或外键列。
这两个表说明了教师与学生之间的一对多关系。
关系和参照完整性
在您添加了一个外键到表格后,创建执行的数据库约束参照完整性在两个表之间。此步骤确保表之间的关系保持一致。当一个表有另一个表的外键时,参考完整性要求表B中的任何外键值必须参考表A中的现有记录。
实施关系
根据您的数据库,您可以以不同方式实现表之间的关系。Microsoft Access.提供一个向导,允许您链接表并强制执行引用完整性。
如果您直接编写SQL,您将首先创建表教师,声明ID列为主键:
创建表教师(ChannerorID int auto_increment主键,
teart_name varchar(100),
课程varchar(100)
);
创建学生表时,将Tearts_FK列声明为引用教师表中的教学列的外语键:
创建表学生(
StudentId int auto_increment主键,
student_name varchar(100),teart_fk int,
外键(TAUST_FK)参考教师(教学))
);
使用关系加入表
在您在数据库中创建了一个或多个关系后,通过使用SQL连接查询来利用它们的电源来组合来自多个表的信息。最常见的加入类型是一个SQL Inner Join.,这是一个简单的连接。此类连接返回符合来自一个或多个表的连接条件的所有记录。例如,此加入条件返回Student_name,Text_Name以及课程,其中学生表中的外键与教师表中的主键匹配:
选择学生.student_name,教师.teacher_name,教师.Course
来自学生
内心的教师
在学生.Teacher_fk =教师.Instructorid;
此语句会产生类似的表:
从SQL Join语句中返回表
student_name tears_name课程
Lowell Smith John Doe English
Brian Short John Doe英语
Corky Mendez Jane Schmoe Math
Monica Jones John Doe English