设计和创建表间关系

来源:互联网 发布:国别域名注册 编辑:程序博客网 时间:2024/05/22 03:15

第 6 节:设计和创建表间关系


在这一课,您将学习如何使用外键来设计和创建表间关系。


有关更多信息,请参阅 " 表是由外键关联的 " 第 12 页。



虽然每个表都包含有关单个主题的信息,但两个或更多个表可能会包含

相关的信息。例如,职员是部门的成员,或者销售订单是一组产品的销

售订单。数据库中的关系可能表现为表间的外键关系,也可能自身就成

为独立的表。您将在本章中看到这两种情况的示例。


通过在数据库中创建关系,可以编写用于管理表中数据的规则或惯例的

代码。当关系置入数据库结构后,将不存在对例外情况的规定。


表间关系分为以下几个类别。


• 一对一关系 一个实体中的每个项都对应于另一个实体中的零个

或一个实体。例如,在示例数据库中,一个 职员管理一个 部门。

没有地方可以输入另一个部门经理。重复该部门条目会涉及到重

复部门 ID,由于部门 ID 列是主键,所以这是不可能的。


通常,最好将处于一对一关系的项组合到一个表中。 department

表中有一个 manager 列,而不是有一个单独的表名为 manager。


有关应该单独存放项的情况,请参阅 "ASA SQL 用户指南 > 设计

数据库 "。


多对一关系 多对一关系成为表间的外键关系。在多对一关系中,

一个 实体中的主键成为多个 表中的新外键列。


例如,在您刚创建的数据库中,一个 客户可以下多份 订单,但

每份订单只能由一个客户发出。若要表示一对多关系, sales_order

表中需要一个外键列 (cust_id),它映射到 customer 表中的主键列

(id)。通常,为这两个列指定相同的名称将会方便一些。



sales_order 表的 cust_id 列中的每一个条目都必须与 customer 表的 id

列中的一个条目相匹配。 sales_order 表 (包含关系中的外键)称

作外表或引用表。 customer 表 (包含被引用的主键)称作主表或

被引用表。


多对多关系 多对多关系由一个中间表来表示,而且从该中间表


到每个相关实体存在外键关系。



例如,在示例数据库中,产品和销售订单之间存在多对多关系。

一个销售订单可能包含多种产品,而一种产品可能会出现在多个

销售订单上。

product


id

name


integer

char(15)


id

id = prod_id


sales_order_items

integer


id = id



id


sales_order

integer


description char(30)


line_id


smallint


size char(18)


prod_id integer


order_date date


color

quantity


char(6)

integer


quantity integer

ship_date date


region


char(7)



unit_price numeric(15,2)


在某些情况下,中间表 (sales_order_items) 包含附加的信息,如已订

购产品的件数以及它们的发货日期。在本例中,中间表不包含任

何附加信息。


添加用于使数据库中的表相关联的外键。


添加以下外键:


• sales_order_items 中 id 列的外键,引用 sales_order 中的 id 列。该键

将销售订单和销售订单项之间的多对一关系置入数据库。


• sales_order_items 中的 prod_id 列的外键,它引用 product 中的 id 列。

该键将销售订单项和产品之间的多对一关系置入数据库。


• sales_order 中的 cust_id 列的外键,它引用 customer 中的 id 列。该键

将销售订单和客户之间的多对一关系置入数据库。


前两个外键一起将销售订单和产品之间的多对多关系置入数据库。

❖ 创建外键:


1 单击要为其创建外键的表。

2 打开 " 外键 " 文件夹。

3 双击 " 添加外键 " 以打开 " 新建外键 " 向导。

4 遵循向导中的指导操作。

至此,您就学完了有关设计和建立关系数据库的入门章节。本书的其余

章节将介绍如何在数据库中添加数据和从数据库中检索数据。这些章节

将使用 Adaptive Server Anywhere 示例数据库,该数据库比您刚创建的

数据库大一些。
0 0
原创粉丝点击