赛迪网 > IT技术 热点推荐 > 文章
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

设计和建立简单数据库--设计创建表关系

发布时间:2007.08.21 14:20     来源:赛迪网    作者:Anywhere

第 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 示例数据库,该数据库比您刚创建的

数据库大一些。 (责任编辑:卢兆林)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· 设计和建立简单数据库之--设计列属性 (08-21) · 设计和建立简单数据库之标识和创建主键 (08-21)
· 设计和建立简单数据库--设计和创建表 (08-21) · 设计和建立简单数据库---连接到数据库 (08-21)
· 设计和建立简单数据库之创建数据库文件 (08-21) · 设计和建立数据库之查看示例数据库结构 (08-21)
· 设计和建立数据库之示例数据库图文简介 (08-21) · 第 4 章 数据库应用程序的体系结构1 (08-21)
· 数据库、日志和索引的配置应注意的原则 (08-20) · 教你巧用数据库日志恢复数据到时间点 (08-20)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
[政务][电信][金融][农业][制造业][中小企业]
[CIO][ERP][协同][IT管理][中间件][电子商务]
[政策][地方][专家][评估][辞典][博客][社区]
· 专题:一路畅通构想曲——让出行不再遭遇堵车
· CIO工作亲历:企业ERP选型不能忽视"选人关"
· 综述:信息化建设给中国监狱带来的各种变化
· 金融业风险管理和法规遵从有五点需考虑的因素
· 保险业CIO关注:该如何建立统一高效的CRM体系
· 调查显示:多数CIO对IT规划仍存在困惑和误解
  博客·论坛 ·曾剑秋·项立刚·Java学习·网管