热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

mysql数据库设计的基础_MySQL数据库设计基础

为什么需要规范的数据库设计?什么是数据库设计?数据库设计就是将数据库中的数据实体及这些数据实体之间的关系,进行规划和结构化的过程.数据库设计非常重要!数据库中创建的数据结构的种类,

为什么需要规范的数据库设计?

什么是数据库设计?

数据库设计就是将数据库中的数据实体及这些数据实体之间的关系,进行规划和结构化的过程.

数据库设计非常重要!

数据库中创建的数据结构的种类,以及在数据实体之间建立的复杂关系是决定数据库系统效率的重要因素

良好的数据库设计:

效率高

便于进一步扩展

可以使应用程序的开发变得更容易

设计数据库的步骤

在需求分析阶段,设计数据库的一般步骤如下:

1.收集信息

2.标识实体

3.标识每个实体的属性

4.标识实体之间的关系

收集信息

创建数据库之前,必须充分理解数据库需要完成的任务和功能

标识实体

在收集需求信息后,必须标识数据库要管理的关键对象或实体

标识每个实体需要存储的详细信息

将数据库中的主要实体标识为表的候选实体以后,就要标识每个实体存储的详细信息

标识实体之间的关系

能够关联数据库中各个项目的相关信息

概要设计-绘制E-R图

实体-关系模型

实体--------是指现实世界中具有区分其他事物的特征或属性并与其他事物有联系的事物

2. 属性--------可以理解为实体的特征

3. 联系--------联系时两个或多个实体之间的关联关系

实体用矩形表示,一般是名词;

属性用椭圆表示,一般也是名词;

联系用菱形表示,一般是动词;

映射基数--------映射基数表示通过联系与该实体关联的其他实体的个数;一对一: X中的一个实体最多与Y中的一个实体关联,并且Y重的一个实体最多与X中的一个实体关联

一对多: X中的一个实体可以与Y中任意数量的实体关联,Y中的一个实体最多与X中的一个实体关联

多对一: X中的一个实体最多与Y中的一个实体关联,Y中的一个实体可以与X中的任意数量的实体关联

多对多: X中的一个实体可以与Y中的任意数量的实体关联

实体关系图

组成: 1.矩形表示实体集

2.椭圆形表示属性

3.菱形表示联系集

4.直线用来连接属性和实体集,也用来连接实体集和联系集

关系数据库模式

用二维表的形式表示实体和实体间联系的数据模型称为关系模型.关系数据库模式是对关系数据库结构的描述.

表示形式:

R(U) 或者 R(A,B)

R表示关系名,U表示属性集合,A,B代表U中的属性

将E-R图转换为关系模式的步骤如下:

把每个实体都转化为关系模式R(A,B)形式

建立实体间联系的转换

实体间的联系分为一对一,一对多,多对多三种,当两个实体各自转化为关系模式后,实体间联系的转换如下:

一对一的转换:把任意实体的主键放到另一个实体的关系模式中

一对多的转换:把联系数量为1的实体的主键放到联系数量为N的实体关系模式中

多对多的转换:把两个实体中的主键和联系的属性放到另一个关系模式中,注意多生成一个关系模式.

逻辑设计-绘制数据库模型图

绘制数据库模型图的步骤

新建数据库模型图

添加实体

添加数据列及相应的属性

添加实体之间的映射关系

将E-R图转换为数据库模型的步骤如下:

将E-R图中各实体转化为对应的表,将各属性转化为各表对应的列

标识每个表的主键列,需要注意的是,要为没有主键的表添加ID编号列,该列没哟实际含义,只用作主键或外键

在数据库模型图中体现实体之间的映射关系

数据规范化

从关系型数据库表中除去冗余数据的过程称为规范化,如果使用得当,规范化是用于获得高效的关系型数据库表的逻辑结构的最好、最容易的方法。当规范化数据时,应执行下列操作:

将数据库的结构精简为最简单的形式

从表中删除冗余的列

标识所有依赖与其他数据的数据

三大范式内容如下:

第一范式:其目标是确保每列的原子性

第二范式:在第一范式的基础上更进一层,其目标是确保表中的每列都和主键相关

第三范式:在第二范式的基础上更进一层,其目标是确保每列都和主键列直接相关,而不是间接相关



推荐阅读
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 本文详细介绍了如何查找和更改 MySQL 数据库文件的存放路径,包括不同存储引擎的配置方法以及具体操作步骤。 ... [详细]
  • 深入解析Redis内存对象模型
    本文详细介绍了Redis内存对象模型的关键知识点,包括内存统计、内存分配、数据存储细节及优化策略。通过实际案例和专业分析,帮助读者全面理解Redis内存管理机制。 ... [详细]
  • 本文探讨了Java编程的核心要素,特别是其面向对象的特性,并详细介绍了Java虚拟机、类装载器体系结构、Java类文件和Java API等关键技术。这些技术使得Java成为一种功能强大且易于使用的编程语言。 ... [详细]
  • 基于结构相似性的HOPC算法:多模态遥感影像配准方法及Matlab实现
    本文介绍了一种基于结构相似性的多模态遥感影像配准方法——HOPC算法,该算法通过相位一致性模型构建几何结构特征描述符,能够有效应对多模态影像间的非线性辐射差异。文章详细阐述了HOPC算法的原理、实验结果及其在多种遥感影像中的应用,并提供了相应的Matlab代码。 ... [详细]
  • Netflix利用Druid实现高效实时数据分析
    本文探讨了全球领先的在线娱乐公司Netflix如何通过采用Apache Druid,实现了高效的数据采集、处理和实时分析,从而显著提升了用户体验和业务决策的准确性。文章详细介绍了Netflix在系统架构、数据摄取、管理和查询方面的实践,并展示了Druid在大规模数据处理中的卓越性能。 ... [详细]
  • 本文介绍了如何利用 Spring Boot 和 Groovy 构建一个灵活且可扩展的动态计算引擎,以满足钱包应用中类似余额宝功能的推广需求。我们将探讨不同的设计方案,并最终选择最适合的技术栈来实现这一目标。 ... [详细]
  • MySQL InnoDB Double Write机制详解
    本文深入探讨了MySQL InnoDB存储引擎的Double Write技术,该技术通过在内存和磁盘上创建数据页的副本,确保了部分写失效(Partial Page Write)情况下的数据完整性和可靠性。同时,文章介绍了InnoDB以页为单位进行读取和更新的机制,并详细解析了Double Write的工作原理。 ... [详细]
  • 深入理解 .NET 中的中间件
    中间件是插入到应用程序请求处理管道中的组件,用于处理传入的HTTP请求和响应。它在ASP.NET Core中扮演着至关重要的角色,能够灵活地扩展和自定义应用程序的行为。 ... [详细]
  • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 本文深入探讨了SQL数据库中常见的面试问题,包括如何获取自增字段的当前值、防止SQL注入的方法、游标的作用与使用、索引的形式及其优缺点,以及事务和存储过程的概念。通过详细的解答和示例,帮助读者更好地理解和应对这些技术问题。 ... [详细]
  • 本文详细介绍了在XAMPP环境中如何修改Apache和MySQL的默认端口号,并确保WordPress能够正常访问。同时,提供了针对Go语言社区和Golang开发者的相关建议。 ... [详细]
  • Java项目分层架构设计与实践
    本文探讨了Java项目中应用分层的最佳实践,不仅介绍了常见的三层架构(Controller、Service、DAO),还深入分析了各层的职责划分及优化建议。通过合理的分层设计,可以提高代码的可维护性、扩展性和团队协作效率。 ... [详细]
  • 简化报表生成:EasyReport工具的全面解析
    本文详细介绍了EasyReport,一个易于使用的开源Web报表工具。该工具支持Hadoop、HBase及多种关系型数据库,能够将SQL查询结果转换为HTML表格,并提供Excel导出、图表显示和表头冻结等功能。 ... [详细]
author-avatar
双语的家_352
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有