您的位置  > 互联网

原始单据与实体之间的关系是一对一的吗?

作者:sirfei
来源:blog.csdn.net/sirfei/article/details/434994

1、原始凭证与实体的关系

它可以是一对一、一对多或多对多关系。 一般来说,它们是一对一的关系:即一份原始文档只对应一个实体。 在特殊情况下,它们可能是一对多或多对一的关系,即一个原始文档对应多个实体,或者多个原始文档对应一个实体。

这里的实体可以理解为基本表。 明确了这个对应关系之后,对于我们设计输入界面会有很大的好处。

〖示例1〗:一条员工简历信息对应人力资源信息系统中的三个基本表:员工基本信息表、社会关系表、工作简历表。 这是“一份原始文件对应多个实体”的典型例子。

2. 主键和外键

一般来说,一个实体不能同时拥有主键和外键。 在ER图中,叶子位置的实体可以定义主键,也可以不定义(因为它没有后代),但它必须有外键(因为它有父级)。

主键和外键的设计在全局数据库的设计中起着重要的作用。 全球数据库设计完成后,一位美国数据库设计专家表示:“钥匙无处不在,除了钥匙之外什么也没有”。 这是他在数据库设计方面的经验,也体现了他对信息的理解。 系统核心思想(数据模型)的高度抽象。

因为:主键是一个高度抽象的实体,主键和外键的配对代表了实体之间的联系。

3. 基本表的属性

基本表区别于中间表和临时表,它具有以下四个特点:

了解了基本表的本质后,在设计数据库时就可以区分基本表和中间表、临时表了。

4.范式标准

基本表及其字段之间的关系应尽量满足第三范式。 然而,满足第三范式的数据库设计往往不是最好的设计。 为了提高数据库的运行效率,往往需要降低范式标准:适当增加冗余,以达到以空间换时间的目的。

〖例2〗:有一张存放商品的基本表,如表1所示。“金额”这个字段的存在,表明该表的设计不满足第三范式,因为“金额”可以由“单价”乘以“数量”得到,说明“金额”是冗余字段。但是,增加“金额”这个冗余字段,可以提高查询统计的速度,这就是以空间换时间的作法。

在Rose 2002 中,有两种类型的列:数据列和计算列。 “金额”等列称为“计算列”,而“单价”和“数量”等列称为“数据列”。

表1 产品表表结构

 商品名称 商品型号 单价 数量 金额
 电视机 29吋 2,500 40 100,000

5.通俗地理解三种范式

通俗地理解这三种范式对于数据库设计大有裨益。 在数据库设计中,为了更好的应用三大范式,需要通俗地理解三大范式(通俗的理解是充分的理解,而不是最科学、最准确的理解):

任何冗余数据库设计都无法做到这一点。 然而,没有冗余的数据库可能不是最好的数据库。 有时为了提高运行效率,需要降低范式标准,适当保留冗余数据。

具体做法是:在设计概念数据模型时坚持第三范式,在设计物理数据模型时考虑降低范式标准的工作。 降低范式意味着添加字段并允许冗余。

6.善于识别并正确处理多对多关系

如果两个实体之间存在多对多关系,则应消除这种关系。 解决方案是在两者之间添加第三个实体。 这样,原来的多对多关系,现在就变成了两个一对多的关系。 原有两个实体的属性应该合理分配给三个实体。

这里的第三个实体本质上是一个更复杂的关系,它对应着一个基本的表。 一般来说,数据库设计工具无法识别多对多关系,但可以处理多对多关系。

〖例3〗:在“图书馆信息系统”中,“图书”是一个实体,“读者”也是一个实体。这两个实体之间的关系,是一个典型的多对多关系:一本图书在不同时间可以被多个读者借阅,一个读者又可以借多本图书。
为此,要在二者之间增加第三个实体,该实体取名为“借还书”,它的属性为:借还时间、借还标志(0表示借书,1表示还书),另外,它还应该有两个外键(“图书”的主键,“读者”的主键),使它能与“图书”和“读者”连接。

7、如何获取主键PK的值

PK是一款为程序员提供的表间连接工具。 可以是无物理意义的数字串,由程序自动加1实现。也可以是有物理意义的字段名或字段名的组合。 但前者比后者好。 当PK为字段名组合时,建议字段不要过多。 如果太多,索引不仅会占用大量空间,而且速度也会很慢。

8.正确理解数据冗余

主键和外键在多个表中重复出现并不构成数据冗余。 这个概念一定要清楚。 事实上,很多人还不清楚。 非关键字段的重复出现就是数据冗余! 而且是一种低级冗余,即重复冗余。 高级冗余不是某个字段的重复出现,而是某个字段的派生出现。

〖例4〗:商品中的“单价、数量、金额”三个字段,“金额”就是由“单价”乘以“数量”派生出来的,它就是冗余,而且是一种高级冗余。冗余的目的是为了提高处理速度。
只有低级冗余才会增加数据的不一致性,因为同一数据,可能从不同时间、地点、角色上多次录入。因此,我们提倡高级冗余(派生性冗余),反对低级冗余(重复性冗余)。

9、E--R图没有标准答案

信息系统的ER图没有标准答案,因为它的设计和绘制方法并不唯一。 只要涵盖了系统需求的业务范围和功能内容,都是可行的。 否则,修改E--R图。

虽然它没有单一的标准答案,但并不意味着可以随意设计。 好的ER图的标准是:结构清晰、关系简洁、实体数量适中、属性分布合理、无低级冗余。

10.视图技术在数据库设计中很有用

与基本表、代码表、中间表不同,视图是一个虚拟表,依赖于数据源的真实表而存在。 视图是程序员使用数据库的窗口,是基表数据合成的一种形式,是一种数据处理的方法,也是对用户数据保密的一种手段。

为了进行复杂的处理、提高计算速度、节省存储空间,视图的定义深度一般不超过三级。 如果三层视图还不够,就应该在视图上定义临时表,在临时表上定义视图。 通过以这种方式重复重叠定义,视图的深度不受限制。

对于某些关系到国家政治、经济、技术、军事和安全利益的信息系统,意见的作用更为重要。 这些系统的基本表的物理设计完成后,立即在基本表上建立一级视图。 该级别视图的数量和结构与基本表的数量和结构完全相同。 还规定所有程序员只允许对视图进行操作。

只有数据库管理员拥有多人共享的“安全密钥”,才能直接对基础表进行操作。 请读者思考:这是为什么?

11. 中间表、报告和临时表

中间表是存储统计数据的表。 它是为数据仓库、输出报告或查询结果而设计的。 有时它没有主键和外键(数据仓库除外)。 临时表是程序员设计的,用于存储供个人使用的临时记录。 基表和中间表由DBA维护,临时表由程序员自己自动维护。

12、诚信约束表现在三个方面

域完整性:使用Check来实现约束。 在数据库设计工具中,定义字段取值范围时,有一个勾选按钮,通过该按钮来定义该字段的取值范围。

参照完整性:使用PK、FK和表级触发器实现。 用户定义的完整性:是一些业务规则,使用存储过程和触发器实现。

13、防止数据库设计被打补丁的方法是“三少原则”

1、数据库中表的数量越少越好。 只有减少表的数量,系统的ER图才能更少、更精确。 去除重复、冗余的实体,形成对客观世界的高度抽象,进行系统的数据集成,避免修补。 的设计;

2、表中组合主键字段的数量越少越好。 因为主键的作用,首先是建立主键索引,其次作为子表的外键,减少了组合主键的字段数量,这样不仅节省了运行时间,还节省了索引存储空间;

3、表中的字段越少越好。 只有字段数量减少了,才意味着系统中没有数据重复,数据冗余很少。 更重要的是,呼吁读者学会“变列为行”,从而防止子表中的字段被拉出。 进入主表,在主表中留下许多空白字段。 所谓“列转行”,就是从主表中拉出部分内容,建立一个单独的子表。 这个方法很简单,但是有些人就是不习惯,不采用,不执行。

数据库设计的一个实用原则是在数据冗余和处理速度之间找到适当的平衡。 “三少”是一个整体概念,是一个综合观点,不能孤立某个原则。

这个原则是相对的,不是绝对的。 “三多”原则肯定是错误的。 试想:如果覆盖系统相同的功能,一百个实体(总共一千个属性)的ER图肯定会比两百个实体(总共两千个属性)的ER图好得多。 。

提倡“三少”原则,就是教会读者利用数据库设计技术进行系统的数据集成。 数据集成的步骤为:将文件系统集成为应用数据库,将应用数据库集成为主题数据库,将主题数据库集成为全局综合数据库。

集成程度越高,数据共享越强,信息孤岛越少,整个企业信息系统全局ER图中实体、主键、属性的数量就越少。

提倡“三少”原则的目的是为了防止读者利用打补丁技术不断增删改数据库,把企业数据库变成随意设计的数据库表的“垃圾堆”,或者是“杂院”。 ” 数据库表。 最后,导致数据库中存在无数的基本表、代码表、中间表、临时表,导致企事业单位的信息系统无法维护、瘫痪。

“三多”原则任何人都可以做到,这是“补丁法”数据库设计的荒谬理论。 “三少”原则就是少而精的原则。 它需要很高的数据库设计技巧和艺术,这不是任何人都可以达到的,因为这个原则是消除使用“修补方法”来设计数据库的理论基础。

14、提高数据库运行效率的方法

在给定的系统硬件和系统软件条件下,提高数据库系统运行效率的方法是:

总之,提高数据库的运行效率,必须在三个层面同时开展工作:数据库系统级优化、数据库设计级优化、程序实现级优化。

以上十四个技巧是很多人通过大量的数据库分析和设计实践逐步总结出来的。 对于这些经验的运用,读者不应机械地记忆和背诵,而应消化理解,实事求是,灵活掌握。 并逐步做到:在应用中发展,在发展中应用。