SQL Server 数据库设计

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介:

一、数据库设计的必要性

         在实际的软件项目中,如果系统中需要存储的数据量比较大,需要设计的表比较多,表与表之间的关系比较复杂,那我们就需要进行规范的数据库设置。如果不经过数据库的设计,我们构建的数据库不合理、不恰当,那么数据库的维护、运行效率会有很大的问题。这将直接影响到项目的运行性和可靠性。

二、什么是数据库设计

      数据库设计实际上就是规划和结构化数据库中的数据对象以及这些数据对象之间的关系过程。

三、数据库设计的重要性

      Ø 不经过设计的数据库或是设计糟糕的数据库很可能导致

            1、 数据库运行效率地下

            2、 更新、删除、添加数据出现问题

      Ø 良好设计的数据库

             1、 执行效率高

             2、 使应用程序更便于开发

             3、 扩展性好

             4、 维护性好

四、数据模型

        数据模型就像是数据间联系的一个轮廓图,整个模型就像一个框架。

       如果按照记录间联系的表示方式,对数据模型进行分类,可以分为:层次模型、网状模型、关系模型。前两种又称为格式化数据模型。数据模型的好坏直接影响到数据库的性能,所以数据模型的选择是数据库设计的首要任务。

       Ø 实体-关系(E-R)数据模型

              E-R数据模型(Entity-Relationship data model),即实体-关系数据模型。E-R数据模型不同于传统的关系数据模型,它不是面向实现,而是面向现实物体的。

       Ø 实体(Entity)

              数据是用来描述现实中的物体的,而描述的对象都是形形色色的,有具体的、也有抽象的;有物理上存在的、也有概念性的。凡是可以互相区别而且可以被人们认识的事、物、概念等统统抽象为实体。多个相同的类型的实体可以称为实体集(Entity set)。因此,在E-R数据模型中,也有型与值之分;实体可以作为型来定义,每个实体可以是它的实例和值。

       Ø 属性(Attribute)

              实体一般具体若干特征,这些特征称为实体的属性。而每个属性都有自己的取值范围,在E-R数据模型中称为值集(value set)。在同一实体集中,每个实体的属性及其值集都是相同的,但可能取不同的值。属性对应数据库表的列。

       Ø 关系(Relationship)

              实体之间会有各种关系,这些关系抽象为联系。不但实体可以有属性,关系也可以有属性。

五、数据库设计步骤

       Ø 数据库设计可以分为以下几个阶段

              1、 需求分析阶段:分析客户的业务需求,特别是数据方面的需求

              2、 概要设计阶段:绘制数据库的E-R图,并确认需求文档的正确性和完整性,E-R图是项目的设计人员、开发人员、测试人员,以及和客户进行沟通的重要凭据

              3、 详细设计阶段:将概要设计阶段的E-R图转换为数据库表,进行逻辑设计,确定各个表之间的主外键关系,运用数据库的三范式进行审核,并进行技术评审。最后决定选哪种数据库(Oracle、SQLServer、MySQL)来建库、建表。

       Ø 需求分析阶段:数据库系统分析

              秀气分析阶段的重点是调查、收集、分析客户的业务数据需求以及数据的安全性、完整性需求等。

       需求分析步骤:

              1、 确认业务需求

              2、 标识关系实体

              3、 标识每个实体的具有的属性

              4、 确认实体之间的关系

       Ø 概要设计阶段:绘制E-R图

              作为数据库设计者,你需要和项目组内其他成员分享你的设计思路,共同研讨数据库设计的合理性、安全性、完整性,并确认是否符合客户的业务需求。那么使用E-R图,这种图形化的表示方式最为直观。

              * E-R图中的实体、属性和关系

                     image

              上面的简单E-R图可以看出用户和收支之间的关系。在上图中可以看出:用矩形表示实体,实体是一般名词;椭圆表示属性,一般也是名词;菱形表示关系,一般是动词。

              * 映射基数

              映射基数表示可以通过关系与该实体的个数。对于实体集A和B之间的二元关系,可能的映射基数有:

                     1、 一对一:也就是A实体中最多只有一个B实体的关联,而B实体的最多只有一个A实体的关联。用E-R图表示:

                         image

                     2、 一对多:A实体可以与B实体任意数量的进行关联,B中的实体最多与A中的一个实体关联。E-R图表示:

                         image

                     3、 多对一:A实体最多与一个B实体进行关联,而B实体可以和任意多个A实体进行关联。E-R图表示:

                         image

                     4、 多对多:A实体可以有多个B实体,而B实体也可以有任意多个A实体。E-R图表示:

                         image

              * E-R图

              E-R图可以以图形化的方式将数据库的整个逻辑结构表示出来,组成部分有:

                     1、 矩形表示实体集

                     2、 椭圆表示属性

                     3、 菱形表示关系、

                     4、 直线用来连接实体集与属性、实体集和关系

                     5、 直线箭头表示实体集之间映射基数

      Ø 详细设计阶段:将E-R图转换为表

            步骤如下:

                  1、 将各个实体转换为对应的表,将各属性转换为对应的列

                  2、 标识每张表的主键

                  3、 将实体之间的关系转换为表与表之间的主外键关系

六、数据库设计规范化

      Ø 数据库设计中经常出现的问题

            1、 数据冗余大

            2、 插入数据异常

            3、 删除异常

            4、 更新异常

      Ø 规范设计

            一个较好的关系数据库模型,它的每个关系中的属性一定要满足某种内在的语义条件,即要按一定的规范设计关系模型,这就是设计的规范化。

            在数据库设计时,有一些专门的规则,称为数据库的设计范式,遵循这些规则,就可以创建出良好的数据库,数据库著名的三大范式理论:

                  1、 第一范式(1NF)

                        第一范式是满足关系数据库模型所要遵循的最基本的条件范式,几关系中的每个属性必须是不可再分的简单项,不能是属性组合,即属性的取值是不可拆分的原子值。

                  2、 第二范式(2NF)

                        第二范式是在第一范式的基础上,确保表中的每列都和主键相关。其定义是如果一个关系满足1NF,并且除了主键关系外的其他列都依赖于该主键,则满足第二范式。

                  3、 第三范式(3NF)

                        第三范式是在第二范式的基础上进行的,第三范式的目标是确保每列都和主键列直接相关,而不是间接相关的。其定义是:如果一个关系满足2NF,并且除主键外的其他列都不传递依赖于该主键。

      Ø 规范化和性能关系

            为了满足三大范式,数据库的性能可能会有一定程度的降低。所以,在实际数据库设计中,我们既要尽量满足三大范式,从而避免数据冗余和各种数据库的操作异常,同时也要考虑数据的访问性能。有时候,为了提高数据库的访问效率,适当的允许少量数据冗余咧存在,才是最适合的数据库设计方案。







本文转自hoojo博客园博客,原文链接:http://www.cnblogs.com/hoojo/archive/2011/07/15/2107149.html,如需转载请自行联系原作者
相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
6天前
|
SQL 数据库 数据安全/隐私保护
数据库数据恢复——sql server数据库被加密的数据恢复案例
SQL server数据库数据故障: SQL server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。 数据库备份被加密,文件名字被篡改。
|
20天前
|
SQL 数据库连接 Linux
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
39 16
|
23天前
|
SQL 关系型数据库 MySQL
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
|
2月前
|
SQL 数据库
数据库数据恢复—SQL Server报错“错误 823”的数据恢复案例
SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复。
|
2月前
|
SQL 存储 关系型数据库
【SQL技术】不同数据库引擎 SQL 优化方案剖析
不同数据库系统(MySQL、PostgreSQL、Doris、Hive)的SQL优化策略。存储引擎特点、SQL执行流程及常见操作(如条件查询、排序、聚合函数)的优化方法。针对各数据库,索引使用、分区裁剪、谓词下推等技术,并提供了具体的SQL示例。通用的SQL调优技巧,如避免使用`COUNT(DISTINCT)`、减少小文件问题、慎重使用`SELECT *`等。通过合理选择和应用这些优化策略,可以显著提升数据库查询性能和系统稳定性。
105 9
|
3月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
281 6
|
3月前
|
数据库 Windows
SqlServer数据恢复—SqlServer数据库所在分区损坏的数据恢复案例
一块硬盘上存放的SqlServer数据库,windows server操作系统+NTFS文件系统。由于误操作导致分区损坏,需要恢复硬盘里的SqlServer数据库数据。
|
4月前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
119 11
|
4月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
4月前
|
SQL 监控 安全
SQL Servers审核提高数据库安全性
SQL Server审核是一种追踪和审查SQL Server上所有活动的机制,旨在检测潜在威胁和漏洞,监控服务器设置的更改。审核日志记录安全问题和数据泄露的详细信息,帮助管理员追踪数据库中的特定活动,确保数据安全和合规性。SQL Server审核分为服务器级和数据库级,涵盖登录、配置变更和数据操作等事件。审核工具如EventLog Analyzer提供实时监控和即时告警,帮助快速响应安全事件。