数据库关系简介

数据库术语“关系”或“关系”描述表格中数据的连接方式。

数据库领域的新手往往很难看到数据库和电子表格之间的差异。 他们看到数据表并认识到数据库允许您以新的方式组织和查询数据 ,但未能掌握数据之间关系的重要性,这些关系为关系数据库技术提供了名称。

通过关系可以用强大的方式描述不同数据库表之间的关系。 这些关系可以用来执行强大的跨表查询,即连接。

数据库关系的类型

有三种不同类型的数据库关系,每种关系都根据关系中可能涉及的表行数进行命名。 这三种关系类型中的每一种都存在于两个表之间。

自我参照关系:特例

当只涉及一个表时,自引用关系就会发生。 一个常见的例子是雇员表,其中包含有关每位员工的主管的信息。 每位主管也是一名雇员,并有自己的主管。 在这种情况下,存在一对多的自引用关系,因为每个员工都有一个主管,但每个主管可能有多个员工。

使用外键创建关系

通过指定一个外键,可以在表之间创建关系。该键告诉关系数据库这些表是如何关联的。 在许多情况下,表A中的列包含从表B引用的主键。

再次考虑教师和学生表格的例子。 Teachers表格只包含一个ID,一个名称和一个课程列:

教师
InstructorID 老师的名字 课程
001 John Doe 英语
002 简Schmoe 数学

Students表包含一个ID,名称和一个外键列:

学生们
学生卡 学生姓名 Teacher_FK
0200 洛厄尔史密斯 001
0201 Brian Short 001
0202 科基·门德斯 002
0203 莫妮卡琼斯 001

Students表中的Teacher_FK列引用了Teachers表中教师的主键值

通常,数据库设计人员将在列名称中使用“PK”或“FK”来轻松识别主键或外键列。

请注意,这两个表格说明了教师和学生之间的一对多关系。

关系和参照完整性

一旦将一个外键添加到表中,您就可以创建一个数据库约束来强制两个表之间的参照完整性 。 这确保了表格之间的关系保持一致。 当一个表具有指向另一个表的外键时,参照完整性的概念指出,表B中的任何外键值都必须引用表A中的现有记录。

实现关系

根据您的数据库,您可以通过不同的方式实现表格之间的关系。 Microsoft Access提供了一个向导,可轻松让您链接表格并强制执行参照完整性。

如果您直接编写SQL,则应首先创建表Teacher,并将ID列声明为主键:

CREATE TABLE教师(

InstructorID INT AUTO_INCREMENT PRIMARY KEY,
Teacher_Name VARCHAR(100),
课程VARCHAR(100)
);

在创建Students表时,您将Teacher_FK列声明为引用Teachers'表中InstructorID列的外键:

CREATE TABLE学生(
StudentID INT AUTO_INCREMENT PRIMARY KEY,
Student_Name VARCHAR(100),Teacher_FK INT,
FOREIGN KEY(Teacher_FK)参考教师(InstructorID))
);

使用关系来加入表格

一旦在数据库中创建了一个或多个关系,就可以通过使用SQL JOIN查询来合并来自多个表的信息,从而充分发挥其功能。 最常见的连接类型是SQL INNER JOIN或简单连接。 这种类型的联接从多个表中返回满足联接条件的所有记录。 例如,此JO​​IN条件将返回Student表名中的外键与Teachers表中的主键相匹配的Student_Name,Teacher_Name和Course:

SELECT Students.Student_Name,Teachers.Teacher_Name,Teachers.Course
从学生
INNER JOIN教师
ON Students.Teacher_FK = Teachers.InstructorID;

这个语句产生一个如下所示的表格:

从SQL连接语句返回表

Student_NameTeacher_NameCourseLowell SmithJohn DoeEnglishBrian ShortJohn DoeEnglishCorky MendezJane SchmoeMathMonica JonesJohn DoeEnglish