← SQL 简介 | 数据查询语言 → 在学习 SQL 之前,关系数据库有一些重要的概念需要先了解。数据库存储信息系统的 数据。我们根据可比数据的组来对数据进行分组(所有员工,所有项目,所有办事处...)。对于每组可比数据,我们创建一个 *表*。此表专为适合此类型的数据而设计(其属性)。例如,名为 *employee* 的表,存储所有员工,将按照以下方式设计
employee 表
|
id_employee 主键 |
一个整数 |
firstname 一列 |
一个字符串 一个列类型 |
lastname |
一个字符串 |
phone |
10 个数字 |
mail |
一个字符串 |
公司员工将按照以下方式存储
存储在表中的数据被称为 *实体*。由于表通常表示为数组,数据属性(姓氏,名...)被称为 *列*,记录(员工)被称为 *行*。*id_employee* 是数据库特定的技术标识符,被称为 *主键*。它用于将表中的实体链接到另一个表。为此,它必须对每一行都是唯一的。主键通常用下划线表示。任何唯一的属性(例如,邮件)或属性组(例如,姓氏和名)都可以作为表的 主键,但建议使用一个额外的技术 ID(id_employee)作为主键。
让我们创建一个名为 *project* 的第二个表,用于存储公司项目
employee
|
id_employee |
一个整数 |
firstname |
一个字符串 |
lastname |
一个字符串 |
phone |
10 个数字 |
mail |
一个字符串 |
|
project
|
id_project |
一个整数 |
name |
一个字符串 |
created_on |
一个日期 |
ended_on |
一个日期 |
# manager |
一个整数 |
|
公司项目将按照以下方式存储
|
project
|
id_project |
name |
created_on |
ended_on |
# manager |
1 |
Google |
1998-09-08 |
NULL |
5
|
2 |
Linux |
1991-01-01 |
NULL |
3
|
3 |
Wikipedia |
2001-01-01 |
NULL |
4
|
|
*id_project* 是 project 表的主键,*manager* 是 *外键*。外键是等于另一个表(这里指 employee 表)中存储的主键之一的技术 ID。这样做,Google 项目与员工 Larry PAGE 相关联。这种关联被称为 *关系*。外键通常用井号开头。注意,多个项目可以指向同一个 *共同* 管理员,因此一个员工可以管理 *多个* 项目。
现在,我们想创建一个不是单个链接,而是多个链接。因此,我们创建一个 *连接表*。连接表是不用于存储数据而是链接其他表中实体的表。让我们创建一个名为 *members* 的表,用于链接员工与项目
employee
|
id_employee |
一个整数 |
firstname |
一个字符串 |
lastname |
一个字符串 |
phone |
10 个数字 |
mail |
一个字符串 |
|
members
|
# id_employee |
一个整数 |
# id_project |
一个整数 |
|
project
|
id_project |
一个整数 |
name |
一个字符串 |
created_on |
一个日期 |
ended_on |
一个日期 |
# manager |
一个整数 |
|
员工和项目可以按照以下方式关联
|
project
|
id_project |
name |
created_on |
ended_on |
# manager |
1 |
Google |
1998-09-08 |
NULL |
5
|
2 |
Linux |
1991-01-01 |
NULL |
3
|
3 |
Wikipedia |
2001-01-01 |
NULL |
4
|
|
members
|
# id_employee |
# id_project
|
3 |
2
|
2 |
1
|
4 |
3
|
5 |
1
|
2 |
3
|
6 |
1
|
7 |
3
|
|
一个员工可以与多个项目关联(John DOE 与 Google 和 Wikipedia),*并且* 一个项目可以与多个员工关联(Wikipedia 与 Jimmy、John 和 Jenny),这在只使用外键的情况下是无法做到的。连接表没有自己的主键。它的主键是外键对,因为这个对是唯一的。连接表可以通过包含更多列来链接两个以上的实体表。
因此,让我们列出不同类型的关系
- 一对一,
- 一对多(例如,项目的经理),
- 多对多(例如,项目的成员)。
对于每种类型的关系,都有一种方法可以链接实体
- 一对多关系:从一个实体表到另一个实体表创建一个外键,
- 多对多关系:创建一个连接表,
- 一对一关系:合并两个表。
现在您已经知道如何设计数据库模式以及如何将信息系统的数据放入其中。