良好的数据库逻辑设计和物理设计是数据库高性能的基础,所以对于数据库结构优化是很有必要的
目的:
1、减少数据的冗余
2、尽量避免在数据插入、删除和更新异常
例如:有一张设计不得当的学生选课表
CREATE TABLE selectcourse( stu_no INT(11) NOT NULL COMMENT ‘学号‘, stu_name VARCHAR(10) NOT NULL COMMENT ‘学生姓名‘, birth_date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT ‘生日‘, course_name VARCHAR(10) NOT NULL COMMENT ‘课程名称‘, score INT(11) DEFAULT NULL COMMENT ‘成绩‘, course_point INT(11) NOT NULL COMMENT ‘学分‘, PRIMARY KEY(stu_no, course_name) ) ENGINE = INNODB DEFAULT CHARSET=utf8
查询结果:
1 sam 1994-06-22 16:19:39 数学 10 1 sam 2019-06-22 16:21:02 英语 9 2 jesen 1995-06-22 16:19:39 数学 10 2 jesen 1995-06-22 16:22:27 英语 9
插入异常:
如果表中某个实体依赖另一个实体而存在,想添加一门语文课,但是依赖学生、学号等
更新异常:
更新表中某个实体的单独属性时,需要对多行进行更新,如果把数学的学分进行更新,就需要更新多条数据
删除异常:
删除表中某个实体,导致其他实体也被删除,想要删除英文这门课,但是也会被选择语文课的学生信息也删除
3、解决数据库存储空间
4、提高查询效率
设计步骤:
1、需求分析:存储需求、数据处理需求、安全性要求等
2、逻辑设计:
1、设计数据的逻辑存储结构
2、数据实体之间的逻辑关系,解决数据冗余和数据存储异常
原文:https://www.cnblogs.com/huigelaile/p/11069376.html