SQL Server学习记忆——数据库设计的技巧并举例(二)
来源:互联网 发布:中电大数据 张振兴 编辑:程序博客网 时间:2024/05/17 03:38
SQL Server学习记忆——数据库设计的技巧并举例(二)1
前言
这篇博文中对数据库的关系模型,主键和外键,如何避免冗余进行了讲解,并用示例说明了数据库表的组成。
关系模型
连个公共表之间联系有三种:一对一,一对多和多对多。
1. 一对一
表A中的每一行最多和表B有一个相匹配的行。
2. 一对多
表A中的每一行和表B有0~n个相匹配的行,但不可逆。如:出版社可以出版多本书,但一本书只能被一个出版社出版。
3. 多对多
表A中的每一行和表B有0~n个相匹配的行,表B中的每一行和表A有0~n个相匹配的行。
主键与外键
主键与外键一般而言,一个实体不能既无主键又无外键。主键与外键的设计,在全局数据库的设计中,占有重要地位。当全局数据库的设计完成以后,有个美国数据库设计专家说:“键,到处都是键,除了键之外,什么也没有”,这就是他的数据库设计经验之谈,也反映了他对信息系统核心(数据模型)的高度抽象思想。因为:主键是实体的高度抽象,主键与外键的配对,表示实体之间的连接。
规范化
规范化是通过修改表以减少冗余和矛盾的一系列步骤。
1. 第一范式(1NF)
(1)列仅包含原子值(原子值,是不能再细分的单一值);
(2)没有重复的组(两个或多个逻辑相关联的列的集合。
这个表的列authors给出了多个作者,因此违反了1NF。
这个表违反了1NF的第2条规则。
第二范式(2NF)
(1)主键是一个列(关键字不是组合);
(2)表中所有的列是主键的一部分;
(3)满足第一范式;
(4)非部分函数依赖。第三范式(3NF)
(1)满足2NF;
(2)没有传递依赖。
每一种范式都比前一种更稳健,符合3NF的数据库也符合2NF和1NF。规范化水平越高,表的数量就越多。
示例数据库
使用名为books的数据库,该数据库包含表有:authors,publishers,titles和titles_authors。
1. 表authors
authors描述书的作者,每一个作者有唯一的标识符,称为主键。表authors的结构如下:
2. 表authors的内容如下:
3. 表publishers
4.表 titles
4. 表title_authors
正确认识数据冗余
主键与外键在多表中的重复出现, 不属于数据冗余。非键字段的重复出现,才是数据冗余!而且是一种低级冗余,即重复性的冗余。高级冗余不是字段的重复出现,而是字段的派生出现。
〖例4〗:商品中的“单价、数量、金额”三个字段,“金额”就是由“单价”乘以“数量”派生出来的,它就是冗余,而且是一种高级冗余。冗余的目的是为了提高处理速度。只有低级冗余才会增加数据的不一致性,因为同一数据,可能从不同时间、地点、角色上多次录入。因此,我们提倡高级冗余(派生性冗余),反对低级冗余(重复性冗余)。
- [1] SQL基础教程(第三版). ↩
- SQL Server学习记忆——数据库设计的技巧并举例(二)
- SQL Server学习记忆——基于Qt链接SQL Server并读取表中数据(五)
- SQL Server学习记忆——导学(一)
- SQL Server 2005学习之T-SQL数据库设计二
- SQL Server学习记忆——编译SQL Server驱动 QODBC(四)
- Microsoft SQL Server学习(二)--数据库的语法
- SQL Server学习记忆——SQL Server2008安装(三)
- 数据库技巧—SQL Server日期函数的巧妙用法
- 读《启动记忆》笔记(二)记忆的基本技巧
- SQL Server 数据库设计和实现(二)
- 学习记录之--SQL Server 数据库学习笔记(二)
- SQL Server 的事务和锁(举例)——在其他博客上做些笔误修改
- sql数据库学习系列一之SQL Server 数据库设计
- 数据库设计技巧(二)
- 新词举例记忆WSE 二
- SQL Server数据库设计
- SQL Server 数据库设计
- SQL Server 数据库设计
- MapReduce实现分区详细过程
- PE文件详解之PE文件头
- 重新定义网站的友情链接
- PE文件详解之IMAGE_NT_HEADER结构
- microstation level3 11 extrusion exercise
- SQL Server学习记忆——数据库设计的技巧并举例(二)
- 关于c++primer不能用字符串字面值构建vector对象
- Fastjson内幕
- Linux发展史
- 数组中超过出现次数超过一半的数字以及超过三分之一的两个数字,超过四分之一的三个数字
- vim使用总结
- [WorldWide_D幻想乡♂模拟赛][JZOJ4599]西行妖
- PE文件详解之块表
- bzoj1208(set或splay,改天用它练splay的模板)