我们在设计数据库的时候,可能会犯以下错误:
比如,有这么一个表:
学号 |
姓名 |
课程名称 |
成绩 |
学分 |
1 |
张三 |
语文 |
80 |
3 |
2 |
李四 |
语文 |
90 |
3 |
3 |
王五 |
语文 |
56 |
3 |
1 |
张三 |
数学 |
75 |
2 |
1 |
张三 |
物理 |
82 |
5 |
1.数据冗余:
如果要修改课程的学分,则需要对所有相应的课程对应的学分都进行修改,多麻烦
2.更新异常
如果把张三的语文学分修改为5分,那么李四和王五就不服气了,凭什么一样的课程他张三就能得5个学分...
3.插入异常
假设要开一门新的课程,暂时没有人选修,则无法记录到表中,因为没有学号,(学号,课程名称可作为主键).
4.删除异常
假设一批学生选修的课程完成了,这些选修课的记录都应该从数据库中删除,但与此同时,课程名称和学分信息也被删除了.
数据库设计范式:
数据库设计常用范式(1NF,2NF,3NF)
(1)第一范式
数据库表中的字段都是单一属性的,不可再分。(但也不是绝对的,反例如微软的Profile数据表的情况)。
(2)第二范式数据库表中的一些非主键字段部分依赖于部分主键字段。(如上例中,主键应该为学号与课程名称,姓名依赖于学号,学分依赖于课程名称),此种情况只是针对主键是多个字段的情况。(反例:以上例子中,如果每学期的课程名称的学分不确定,可能会有变化,则这里另当别论)。<o:p></o:p>
(3)第三范式
数据库表中的一些非主键字段部分依赖于其它非主键字段。<o:p></o:p> 依据范式,我们可以修改上面的表为三个表:1.------------------------------------------->满足2NF
2.------------------------------------------->满足2NF
3.学生和课程之间的关系是多对多,我们实际设计数据库的时候,通常在两个表之间再建一个表,以两个表的主键来做第三个表的联合主键,显然这里不太适用.
学号 |
课程 |
成绩 |
1 |
语文 |
80 |
2 |
数学 |
null |
3 |
物理 |
null |
没关系,我们还有另一种方法---------------------------------------满足3NF
自动增长标识列 |
学号 |
课程 |
成绩 |
1 |
1 |
语文 |
80 |
2 |
1 |
数学 |
75 |
3 |
1 |
物理 |
82 |
4 |
2 |
语文 |
90 |
5 |
3 |
语文 |
56 |
这里,学号和课程就不是联合主键的身份了
总结:
关于数据库设计的基本原则是:
1.正确反映数据与数据(信息与信息)之间的层次逻辑关系.
2.对进入到数据库中的数据有一个有效性检查.
3.对数据库中的数据进行非逻辑操作进行相应的错误处理.
4.满足系统对性能上的要求.
我们在设计数据库之前一般要根据需求来进行数据库分析,然后再去设计一个完善的数据库,分析的时候画出实体关系模型(ER-建模),我一般用PD这个工具来进行ER建模.
分享到:
相关推荐
淘宝开发人员数据库知识,淘宝网开发人员数据库知识参考手册
数据库数据库知识知识数据库知识数据库知识数据库知识数据库知识数据库知识数据库知识数据库知识
MySQL数据库知识整理,增删改查基础,以及约束,多表,联结
### 软考必备知识点——数据库知识精要 #### 数据库知识概览 数据库知识是软件工程师、系统分析师等IT专业人员必须掌握的核心技能之一,它涵盖了数据管理技术的发展历程、数据库模型、数据操作、数据库语言(如SQL...
本课程适合所有需要学习大型数据库知识的同学,课件内容制作精细,由浅入深,适合入门或进行知识回顾。 【全部课程列表】 1-1-Large Database Introduction大型数据库技术介绍 共63页.pptx 1-2-oracle数据库基础 ...
这个压缩包“数据库复习要点(数据库知识点总汇).gz”显然包含了对数据库基础知识的全面总结,旨在帮助学习者巩固和理解这一领域的关键概念。以下是根据标题和描述提炼出的一些主要知识点: 1. **数据库基本概念**...
2023年数据库知识点总结 数据库知识点总结是数据库管理系统(DBMS)的核心部分,它包括数据库系统、数据库模型、数据模型分类、E-R图设计、范式设计、数据库安装、数据库管理、SQL语言分类等方面的知识点。 数据库...
Oracle数据库知识点总结 章节目录 一、Oracle数据库概述 二、Oracle数据库架构与组件 三、SQL语言基础 四、PL/SQL编程 五、数据库对象管理 六、数据备份与恢复 七、性能优化与安全管理 八、如何学习Oracle数据库 九...
【数据库知识详解】 数据库是现代信息技术中不可或缺的一部分,它是一种有序地存储和组织数据的集合,旨在提供高效、安全的数据共享和访问。数据库知识在软考中占据重要地位,涵盖数据库管理系统的功能、数据模型、...
高级数据库知识点 高级数据库知识点是根据《数据库原理教程》总结的,涵盖了前十章的重要概念和技术。以下是对这些知识点的详细解释: 第一章:数据库系统概述 * 数据库系统的基本概念:数据库、数据库管理系统、...
Mysql数据库知识.xmind
《淘宝开发人员数据库知识手册-终极版(Oracle)》是一本专门为淘宝的开发人员和运维团队设计的专业指南,旨在提供全面、深入的Oracle数据库知识,帮助他们在日常工作中更高效、稳定地管理和使用数据库。手册结合了...
然而,我可以根据标题“浙江省计算机三级数据库知识点.pdf”推测文档可能涵盖的知识点,并提供一个大致的知识框架。 根据浙江省计算机三级数据库考试大纲,以下是可能的知识点: 1. 数据库基础知识:包括数据模型...
"云平台开发技术人员MySQL数据库知识参考手册实用" 这份文档是为云平台开发技术人员提供的 MySQL 数据库知识参考手册,旨在为开发人员提供详细的 MySQL 数据库知识指导。文档从实践角度出发,结合部分实践示例,从...
数据库知识专题六 数据库知识是软件考试的基础知识之一,本篇文章将详细介绍数据库知识的相关概念和技术。 数据库管理系统的功能和特征 数据库管理系统(DBMS)是位于用户与操作系统之间的一层数据管理软件,为...
这份名为“数据库讲义”的PDF讲义,无疑为初学者提供了一条系统学习数据库知识的清晰路径。以下是讲义可能涵盖的一些核心知识点,以及对这些概念的详细解释: 1. **数据库基本概念**:数据库是一个有组织的数据集合...
MySQL数据库知识点总结 MySQL数据库知识点总结是关系型数据库管理系统(RDBMS)的核心概念,涵盖了数据库概念、发展历程、常见数据库、数据库结构、数据操作、SQL语句等知识点。 1. 数据库概念 数据库是用来存储...