美文网首页
数据库结构设计

数据库结构设计

作者: AD刘涛 | 来源:发表于2021-01-26 15:25 被阅读0次
1. 减少数据冗余。
2. 尽量避免数据维护中出现更新,插入和删除异常。
  • 插入异常: 如果表中的某个实体随着另一个实体而存在
  • 更新异常:如果更改表中的某个实体的单独属性时,需要对多行进行更新
  • 删除异常:如果删除表中的某一实体则会导致其他实体的消息
3. 节约存储空间
4. 提高SQL的查询效率

如何理解插入异常

假设这是我们当前设计的表结构。在这个表,存在着两个实体。其中一个实体是学生信息,另一个实体是课程信息。PRIMARY KEY (study_no,course_name) 表明一个学生只能选择相同的课程一次。当前我们只插入以下语句时,
insert into selectcourse(course_name, course_point) values('语文', 10)
则会产生异常。在没有学生选择这门课时,无法把新课程插入到表中。这也就是表中的某个实体随着另一个实体而存在

CREATE TABLE `selectcourse` (
  `study_no` int NOT NULL COMMENT '学号',
  `study_name` varchar(10) COLLATE utf8mb4_general_ci NOT NULL COMMENT '姓名',
  `birth_date` timestamp NOT NULL COMMENT '生日',
  `course_name` varchar(10) COLLATE utf8mb4_general_ci NOT NULL COMMENT '课程名称',
  `score` int DEFAULT NULL COMMENT '成绩',
  `course_point` int NOT NULL COMMENT '学分',
  PRIMARY KEY (`study_no`,`course_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

如何理解更新异常呢

mysql> select * from selectcourse;
+----------+------------+---------------------+-------------+-------+--------------+
| study_no | study_name | birth_date          | course_name | score | course_point |
+----------+------------+---------------------+-------------+-------+--------------+
|        1 | 张三       | 2021-01-26 14:32:36 | 数学        |  NULL |           10 |
|        1 | 张三       | 2021-01-26 14:34:53 | 英语        |  NULL |            9 |
|        2 | 李四       | 2021-01-26 14:35:26 | 数学        |  NULL |           10 |
|        2 | 李四       | 2021-01-26 14:35:47 | 英语        |  NULL |            9 |
+----------+------------+---------------------+-------------+-------+--------------+
4 rows in set (0.00 sec)

假设我们要更新数学该科目的学分:
update selectcourse set course_point=15 where course_name='数学'
我们会看到以下执行结果:

mysql> update selectcourse set course_point=15 where course_name='数学';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

我们可以看到其更新了2行数据。这也就意味着选择该科目的学员越多,更新的学分【行】也就越多。这就是更新异常的具体表现。

相关文章

  • Power Designer—数据库设计步骤

    数据库设计步骤 需求分析 — 概念结构设计 — 逻辑结构设计 — 物理结构设计 — 数据库的建立和测试 — 数据库...

  • 数据库设计

    数据库设计的基本步骤:需求分析概念结构设计逻辑结构设计物理结构设计数据库实施数据库运行和维护 数据字典概念:它是关...

  • 数据库设计过程包括哪几个主要阶段

    内容来源(公众号:PHP版WEB项目)数据库设计过程包括需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库...

  • mysql性能与优化

    数据库结构优化 数据库结构设计 mysql复制

  • 2018-08-29 数据库设计

    数据库设计的过程:需求分析阶段;概念结构设计阶段;逻辑结构设计阶段;数据库物理设计阶段;数据库实施阶段;数据库运行...

  • E-R图绘制

    数据库的设计6个阶段:1、需求分析2、概念结构设计3、逻辑结构设计4、数据库的实施5、数据库的运维 1、E-R图绘...

  • oracle dba笔记

    数据库设计基本步骤:①需求分析阶段②概念结构设计阶段③逻辑结构设计阶段④物理结构设计阶段⑤实施和维护阶段 Orac...

  • 计算机二级java程序语言设计

    公共基础 数据库 数据库设计过程主要包括需求分析、概要结构设计、逻辑结构分析、数据库物理设计、数据库实施、数据库运...

  • 数据库 权限设计

    数据库 权限设计 -系统权限管理设计-通用权限管理设计 之 数据库结构设计 权限 用户 角色 组 用户表

  • 一个数据管理工具的设计资料说明

    程序说明 主要用于直接操作数据库。 架构设计 分层结构设计 C# WPF桌面程序分层结构设计 MVVM设计模式 C...

网友评论

      本文标题:数据库结构设计

      本文链接:https://www.haomeiwen.com/subject/efugzktx.html