表关系(一对一,一对多,多对多) 收藏
可以在数据库图表中的表之间创建关系,以显示一个表中的列与另一个表中的列是如何相链接的。
在一个关系型数据库中,利用关系可以避免多余的数据。例如,如果设计一个可以跟踪图书信息的数据库,您需要创建一个名为 titles 的表,它用来存储有关每本书的信息,例如书名、出版日期和出版社。您也可能保存有关出版社的信息,诸如出版社的电话、地址和邮政编码。如果您打算在 titles 表中保存所有这些信息,那么对于某出版社出版的每本书都会重复该出版社的电话号码。
更好的方法是将有关出版社的信息在单独的表,publishers,中只保存一次。然后可以在 titles 表中放置一个引用出版社表中某项的指针。
为了确保您的数据同步,可以实施 titles 和 publishers 之间的参照完整性。参照完整性关系可以帮助确保一个表中的信息与另一个表中的信息相匹配。例如,titles 表中的每个书名必须与 publishers 表中的一个特定出版社相关。如果在数据库中没有一个出版社的信息,那么该出版社的书名也不能添加到这个数据库中。
为了更好地理解表关系,请参阅:
定义表关系
实施参照完整性
定义表关系
关系的确立需要通过匹配键列中的数据(通常是两表中同名的列)。在大多数情况下,该关系会将一个表中的主键(它为每行提供了唯一标识)与另一个表的外部键中的某项相匹配。例如,通过创建 titles 表中的 title_id(主键)与 sales 表中的 title_id 列(外部键)之间的关系,则销售额就与售出的特定书名相关联了。
表之间有三种关系。所创建关系的类型取决于相关列是如何定义的。
一对多关系
多对多关系
一对一关系
一对多关系
一对多关系是最普通的一种关系。在这种关系中,A 表中的一行可以匹配 B 表中的多行,但是 B 表中的一行只能匹配 A 表中的一行。例如,publishers 和 titles 表之间具有一对多关系:每个出版社出版很多书,但是每本书名只能出自一个出版社。
只有当一个相关列是一个主键或具有唯一约束时,才能创建一对多关系。
多对多关系
在多对多关系中,A 表中的一行可以匹配 B 表中的多行,反之亦然。要创建这种关系,需要定义第三个表,称为结合表,它的主键由 A 表和 B 表的外部键组成。例如,authors 和 titles 表具有多对多关系,这是由于这些表都与 titleauthors 表具有一对多关系。titleauthors 表的主键是 au_id 列(authors 表的主键)和 title_id 列(titles 表的主键)的组合。
一对一关系
在一对一关系中,A 表中的一行最多只能匹配于 B 表中的一行,反之亦然。如果相关列都是主键或都具有唯一约束,则可以创建一对一关系。
这种关系并不常见,因为一般来说,按照这种方式相关的信息都在一个表中。可以利用一对一关系来:
分割具有多列的表。
由于安全原因而隔离表的一部分。
保存临时的数据,并且可以毫不费力地通过删除该表而删除这些数据。
保存只适用于主表的子集的信息。
实施参照完整性
参照完整性是一个规则系统,能确保相关表行之间关系的有效性,并且确保不会在无意之中删除或更改相关数据。
当实施参照完整性时,必须遵守以下规则:
如果在相关表的主键中没有某个值,则不能在相关表的外部键列中输入该值。但是,可以在外部键列中输入一个 null 值。例如,不能将一项工作分配给一位没有包含在 employee 表中的雇员,但是可以在 employee 表的 job_id 列中输入一个 null 值,表明一位雇员没有分配工作。
如果某行在相关表中存在相匹配的行,则不能从一个主键表中删除该行。例如,如果在 employee 表中表明某些雇员分配了某项工作,则不能在 jobs 表中删除该工作所对应的行。
如果主键表的行具有相关行,则不能更改主键表中的某个键的值。例如,如果一位雇员分配了 jobs 表中的某项工作,则不能从 employee 表中删除该雇员。
当符合下列所有条件时,才可以设置参照完整性:
主表中的匹配列是一个主键或者具有唯一约束。
相关列具有相同的数据类型和大小。
两个表属于相同的数据库。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/ago52030/archive/2007/08/01/1721033.aspx
相关推荐
AdventureWorks数据库表关系图
windchill 常用数据库表_表与表的关系对应表,主要是文档,部件,项目,工作流等之类的表字段对应,更多的后面更新
sd表表表数据库表 "1000/AAA/01---高风险销售订单 1999/AAA/01---高风险销售订单 1000/BBB/01---中风险销售订单 1999/BBB/01---中风险销售订单 1000/CCC/01---低风险销售订单 1999/CCC/01---低风险销售订单 RMB/...
Windchill 数据库表结构与关系详解 Windchill 是一种基于 PLM(Product Lifecycle Management,产品生命周期管理)技术的系统,旨在帮助企业更好地管理产品设计、开发、制造和维护等过程。Windchill 系统中有多个...
oracle ERP 各模块数据库表关系PPT课件PPT学习教案.pptx
在SqlServer2008R2中,数据库关系图是存在系统表[sysdiagrams]之中的,但是SqlServer2008R2数据库下的“任务——导出数据”却不能将其导出到.sql文件中。为了解决这个问题,我们可以使用以下方法将数据库关系图导出...
从UML类图到关系数据库表的代码生成方法研究 UML(统一建模语言)是一种用于软件系统建模的标准化建模语言,它的类图是其中最常用的一种图示,用于表示系统中类的静态结构。关系数据库是目前主流的数据库管理系统,...
通过实例学会数据库表之间的相互关系,并用图形的方式展现出来,简单易懂,非常适合初学者。
### 数据库设计与业务实体对象到数据库表的映射关系 #### 一、数据库设计概述 数据库设计是在软件工程和信息系统领域中一个重要的环节,它涉及到如何有效地组织数据以满足特定业务需求。良好的数据库设计不仅能...
sap abap 开发资源
关系型数据库的核心是表(table),表中的每一行代表一条记录,每一列代表一个字段。关系型数据库支持SQL语言,可以通过SQL进行查询和操作。这种类型的数据库通常用于处理结构化数据,如财务数据、员工信息等。 ...
实时数据库和关系数据库有着很多的不同,但是目前实时数据库和关系数据库集成的趋势越来越明显。将生产管理信息系统中使用的关系数据库和实时数据库集成到一起,可以同时满足控制和管理的要求,真正成为管理控制一体...
- 数据库表结构是数据库设计的核心,它定义了各个表之间的关系,以及表中的字段类型、长度、约束等属性。在泛微Ecology 9中,这些表结构支撑着系统的用户管理、流程管理、文档管理、权限控制等多个模块。 2. **E9...
- 主键和外键:主键用于唯一标识表中的每条记录,外键则建立了不同表之间的关系,支持数据库的完整性。 - 索引设计:通过添加索引,可以提高数据查询的性能,特别是对经常查询的字段。 - 规范化:遵循一定的规范...
速达数据库采用的是关系型数据库管理系统(RDBMS),其核心概念包括表(Table)、字段(Field)、记录(Record)和键(Key)。每一个表代表一种实体或业务对象,字段则是表中的列,用来存储特定类型的数据,如文本、...
informatica后台数据库表整理,记录了部分数据库表名与关联关系
商业数据库表通常涵盖销售、市场、客户关系管理等方面的数据。例如,销售订单表可能包含订单编号、客户信息、商品信息、价格、数量等字段;市场活动表可能记录活动名称、预算、效果评估等信息。这些表的结构设计应...
本文将深入探讨如何将数据库表间的关系导出到Visio,以便更好地理解和管理复杂的数据库设计。 首先,我们需要了解数据库表间的关系。在关系型数据库中,表与表之间的联系主要有三种类型:一对一(1:1)、一对多(1:...
在介绍如何使用Power Designer工具生成MySQL数据库表关系视图之前,我们需要了解Power Designer和MySQL的ODBC驱动的背景知识。 Power Designer是一款由Sybase公司开发的强大的数据库设计工具,它支持数据建模,从...
理解表间的关联关系,有助于编写更高效的SQL语句;掌握数据结构,还可以帮助开发自定义功能或进行数据迁移。 总之,金蝶KIS专业版10的数据库设计是整个系统运行的基础,深入理解这些数据库表和字段的功能和结构,...