设计和创建表间关系
来源:互联网 发布:国别域名注册 编辑:程序博客网 时间: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
- 设计和创建表间关系
- 2013access如何创建表和关系
- 窗口创建和关系
- Mysql表的约束设计和关联关系设计
- Mysql表的约束设计和关联关系设计
- 演示用sql 脚本 创建表和关系
- 设计和创建数据库
- 关联关系表设计
- 【数据库设计】表关系
- 数据库设计 表和表之间的三种关系
- Hibernate多表设计和关联关系映射
- 进程的创建和命令行的关系
- so库创建,使用和依赖关系
- oracle表约束关系创建
- 2014.5.5数据库设计:一对多关系的表的设计和查询技巧
- (019):使用对象关系设计器创建对象模型
- 项目设计和客户的关系
- UML和设计的关系, 孰轻孰重?!
- JavaWeb学习总结(五十三)——Web应用中使用JavaMail发送邮件
- 洛谷-多维动态规划-传纸条
- WebLogic使用总结(四)——WebLogic部署Web应用
- 割接
- 菜鸟-爬取百度贴吧美图并保存
- 设计和创建表间关系
- WebLogic使用总结(五)——Web项目使用Sigar在WebLogic服务器部署遇到的问题
- Android 开发中的接口文档
- SQL语句inner join 与left join的区别
- WebLogic使用总结(六)——WebLogic创建虚拟主机和修改启动端口号
- 2017/4/12
- WebLogic使用总结(七)——WebLogic部署Web应用并绑定域名
- hbase介绍
- sql语句——order by 语句总结