导入
SQL 命令入门
学习使用SQL命令的初步步骤。
本课程将讲解实体与关系的基本概念,并结合实际的 SQL 命令和聚合函数进行演示。我们还将介绍主键、外键以及各种运算符,包括 LIKE、AND 和 OR。
客户关系管理系统(CRMS)
我们已经开始设计一个基础的**客户关系管理系统(CRMS)**的数据库。以下是该数据库包含的表及其相互关系的示意图。
...
CRMS 实体关系图
表格的基本信息
我们将从回顾上方的实体关系图(ERD)开始,然后讨论一些在图中可能不明显但重要的列规则。
我们看到共有四个表:
customersordersproductsorder_items
customers 表
customers表包含一个id列,该列也是此表的主键。这意味着每个客户都拥有唯一的id值。- 该表包含一个
name列。其值不要求唯一,即可以有多个客户具有相同的姓名。该列为必填项,因为无法存在没有名称的客户。
orders 表
- 该表也包含一个
id列,作为表的主键,确保每笔订单都有唯一的 ID。 - 它有一个
customer_id列,用于引用customers表中的对应行,表示该订单属于哪个客户。这被称为外键,因为它指向另一张表(customers)的主键(id)。customer_id是必填项。 - 它有一个
order_number列,为字符串类型,必须填写且值唯一。 - 它有一个
ordered_at列,为时间戳类型,是必填项,用于记录客户下单的时间。如果创建订单时未指定,则自动使用当前时间。 customers与orders之间存在一对多的关系:一个客户可以有多个订单,而每一个订单只能归属于一个客户。
products 表
- 该表包含一个
id列,作为主键。 - 同时包含一个
name列,为必填的字符串类型,且不允许两个产品具有相同的名称。
order_items 表
- 该表包含一个
id列,作为表的主键。 - 它有一个
order_id列,用于引用所属的订单,是外键。 orders与order_items之间存在一对多的关系:一个订单可以包含多个订单项。- 该表还有一个
product_id列,用于引用对应的products表中的产品实例,也是一个外键。该列是必填项,因为每个订单项都必须关联到一个具体的产品。 products与order_items之间也存在一对多的关系:一个产品可以出现在多个订单项中。- 业务规则规定:同一订单中不能出现重复的产品。通过
quantity字段来支持同一产品在同一个订单中出现多次的情况。quantity为整数类型,是必填项,默认值为1。 order_items表的作用在于建模orders与products之间的多对多关系。正如前一章所述,多对多关系通常通过中间表来实现。在本例中,这个中间表就是order_items,从而形成两个一对多的关系:一个订单可以有多个订单项,一个产品也可以出现在多个订单项中。
即使是一个简单的 CRMS 系统,其数据模型也涉及大量细节,我们尚未列出全部内容。