数据库设计技巧.doc
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
1. 原始单据与实体之间的关系 可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即 一张原始单据对应且只对应一个实体。在特殊情况下,它们可能是一对多或多对一的关 系,即一张原始单据对应多个实体,或多张原始单据对应一个实体。这里的实体可以理 解为基本表。明确这种对应关系后,对我们设计录入界面大有好处。 〖例1〗:一份员工履历资料,在人力资源信息系统中,就对应三个基本表:员工基 本情况表、社会关系表、工作简历表。这就是"一张原始单据对应多个实体"的典型例子 。 2. 主键与外键 一般而言,一个实体不能既无主键又无外键。在E-R 图中, 处于叶子部位的实体, 可以定义主键,也可以不定义主键(因为它无子孙), 但必须要有外键(因为它有父亲)。 主键与外键的设计,在全局数据库的设计中,占有重要地位。当全局数据库的设计 完成以后,有个美国数据库设计专家说:"键,到处都是键,除了键之外,什么也没有" ,这就是他的数据库设计经验之谈,也反映了他对信息系统核心(数据模型)的高度抽象 思想。因为:主键是实体的高度抽象,主键与外键的配对,表示实体之间的连接。 3. 基本表的性质 基本表与中间表、临时表不同,因为它具有如下四个特性: (1) 原子性。基本表中的字段是不可再分解的。 (2) 原始性。基本表中的记录是原始数据(基础数据)的记录。 (3) 演绎性。由基本表与代码表中的数据,可以派生出所有的输出数据。 (4) 稳定性。基本表的结构是相对稳定的,表中的记录是要长期保存的。 理解基本表的性质后,在设计数据库时,就能将基本表与中间表、临时表区分开来 。 4. 范式标准 基本表及其字段之间的关系, 应尽量满足第三范式。但是,满足第三范式的数据库设计,往往不是最好的设计。为了 提高数据库的运行效率,常常需要降低范式标准:适当增加冗余,达到以空间换时间的 目的。 〖例2〗:有一张存放商品的基本表,如表1所示。"金额"这个字段的存在,表明该 表的设计不满足第三范式,因为"金额"可以由"单价"乘以"数量"得到,说明"金额"是冗 余字段。但是,增加"金额"这个冗余字段,可以提高查询统计的速度,这就是以空间换 时间的作法。 在Rose 2002中,规定列有两种类型:数据列和计算列。"金额"这样的列被称为"计算列",而"单 价"和"数量"这样的列被称为"数据列"。 表1 商品表的表结构 商品名称 商品型号 单价 数量 金额 电视机 29吋 2,500 40 100,000 5. 通俗地理解三个范式 通俗地理解三个范式,对于数据库设计大有好处。在数据库设计中,为了更好地应 用三个范式,就必须通俗地理解三个范式(通俗地理解是够用的理解,并不是最科学最准 确的理解): 第一范式:1NF是对属性的原子性约束,要求属性具有原子性,不可再分解; 第二范式:2NF是对记录的惟一性约束,要求记录有惟一标识,即实体的惟一性; 第三范式:3NF是对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要 求字段没有冗余。 没有冗余的数据库设计可以做到。但是,没有冗余的数据库未必是最好的数据库, 有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。具体做法是:在概 念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。 降低范式就是增加字段,允许冗余。 6. 要善于识别与正确处理多对多的关系 若两个实体之间存在多对多的关系,则应消除这种关系。消除的办法是,在两者之 间增加第三个实体。这样,原来一个多对多的关系,现在变为两个一对多的关系。要将 原来两个实体的属性合理地分配到三个实体中去。这里的第三个实体,实质上是一个较 复杂的关系,它对应一张基本表。一般来讲,数据库设计工具不能识别多对多的关系, 但能处理多对多的关系。 〖例3〗:在"图书馆信息系统"中,"图书"是一个实体,"读者"也是一个实体。这两 个实体之间的关系,是一个典型的多对多关系:一本图书在不同时间可以被多个读者借 阅,一个读者又可以借多本图书。为此,要在二者之间增加第三个实体,该实体取名为 "借还书",它的属性为:借还时间、借还标志(0表示借书,1表示还书),另外,它还应 该有两个外键("图书"的主键,"读者"的主键),使它能与"图书"和"读者"连接。 7. 主键PK的取值方法 PK是供程序员使用的表间连接工具,可以是一无物理意义的数字串, 由程序自动加1来实现。也可以是有物理意义的字段名或字段名的组合。不过前者比后者 好。当PK是字段名的组合时,建议字段的个数不要太多,多了不但索引占用空间大,而 且速度也慢。 8. 正确认识数据冗余 主键与外键在多表中的重复出现, 不属于数 数据库设计是信息系统构建的核心环节,它涉及到数据的组织、存储和访问效率。以下是一些关键的知识点: 1. **原始单据与实体关系**:在数据库设计中,原始单据通常对应于实体,它们的关系可以是一对一、一对多或多对多。一对一关系常见,但在某些场景下,如员工履历资料,可能需要拆分为多个表,形成一对多或多对一的关系。 2. **主键与外键**:主键是唯一标识实体的字段,而外键则是用来建立表间关联的字段。在E-R图中,非叶子节点实体通常需要定义主键,叶子节点实体即使没有子孙也可以定义主键,但必须有外键来指向其父实体。主键和外键的配合是确保数据完整性和关系的基石。 3. **基本表的性质**:基本表拥有原子性、原始性、演绎性和稳定性。原子性意味着字段不可再分;原始性表示记录包含原始数据;演绎性指出从基本表和代码表可推导出所有输出数据;稳定性指表结构相对固定,记录长期保存。 4. **范式标准**:数据库设计通常追求第三范式,以减少冗余和数据不一致。然而,为了提高性能,有时需要牺牲部分范式,增加冗余字段。例如,商品表中添加“金额”字段可以提高查询速度,尽管它违反了第三范式。 5. **理解范式**:第一范式强调属性的原子性,第二范式要求每个记录有唯一标识,第三范式禁止字段由其他字段派生。实践中,有时会根据需求在设计初期遵循第三范式,然后在物理设计阶段适当降低标准。 6. **处理多对多关系**:多对多关系需要通过引入中间表(实体)来转换为一对多关系,以保持数据的一致性。例如,图书馆系统中的“借还书”实体连接“图书”和“读者”。 7. **主键(PK)的选取**:主键可以是无意义的序列号,也可以是具有业务含义的字段。无意义的主键更易于管理,但有意义的主键可能更直观。组合主键要注意字段数量,过多会影响索引效率。 8. **冗余数据的认识**:冗余数据虽可能导致更新异常,但在某些情况下,如为了提高查询速度,可以适当接受。关键在于平衡数据完整性与性能优化。 以上是基于给定文件内容的数据库设计要点,包括实体关系、键的设计原则、基本表特性、范式理论以及处理多对多关系的方法等。这些知识是构建高效、稳定、易于维护的数据库的基础。
- 粉丝: 105
- 资源: 9352
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Chrome代理 switchyOmega
- GVC-全球价值链参与地位指数,基于ICIO表,(Wang等 2017a)计算方法
- 易语言ADS指纹浏览器管理工具
- 易语言奇易模块5.3.6
- cad定制家具平面图工具-(FG)门板覆盖柜体
- asp.net 原生js代码及HTML实现多文件分片上传功能(自定义上传文件大小、文件上传类型)
- whl@pip install pyaudio ERROR: Failed building wheel for pyaudio
- Constantsfd密钥和权限集合.kt
- 基于Java的财务报销管理系统后端开发源码
- 基于Python核心技术的cola项目设计源码介绍