当前位置:   article > 正文

14.sql server数据库设计的重要性(by-朝夕)_sql数据库为什么需要前期的设计

sql数据库为什么需要前期的设计

前言 数据库设计工具

  • PowerDesigner是Sybase的企业建模和设计解决方案。它可以用来话ER图。
  • ER图是什么呢?E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。

为什么要用建模工具?

用它可以画出表与表之间的关系,详细的介绍。如果布置开发任务,可以看图说话,比打开表一个个的看要好给人叙述。对吧?
  • 1

在这里插入图片描述

1.数据库设计的重要性

要谈数据库性能—直接和数据库设计挂钩;
如果不合理-----后续的开发,升级的时候,完全去开不下去;
关系型数据库:存储信息+描述关系;

2.开发工具

PowerDesigner+Microsoft SQL Server Management Studio 18 2012以上;
设计

  1. 需求分析,明白需要存储什么
  2. 大概设计阶段-----E-R图,解决多方沟通问题
  3. 详细设计----精确到每一个字段
  4. 关系
    表和表之间的关系
  5. 一对一:一个—身份证 ,一夫一妻,数据表垂直切分:相同的主外键
  6. 一对多:订单—多个商品; 省----市,国家—公民; 主外键来体现
  7. 多对多:学员----课程,家长—子女 ,用户–菜单 一般情况下:中间表/关系表

3.数据库三大范式

范式:建议、不是说绝对的要遵循
a. 第一范式:
一范式:每一个列都保持原子性,不可分割;
从表字段的角度来说讲:用户----多个电话:座机、手机号码1、手机号码2
UserInfo-----Detail(JSON格式的字符串----这个用户的所有信息)------查询快—更新慢
从字段的角度来谈单一职责,一个列只存储一个信息—可以来3个字段
优点:更新的时候快,查询也不影响
缺点:部分场景更新成本比较高
b.第二范式:
二范式:在第一范式的基础上,每一列和主键相关; 要求要有主键
Class–班级 一个列存储班级,一个列存储学生
Student —学生,
【不推荐】 都存储一个表,一个字段表示班级,另一个字段表示学员;
推荐使用多个表来存储,学员一个表,班级一个表;主外键的关系来关联;
从每一条记录(对象)的角度来谈单一职责;
c.第三范式:
三范式:每一列的跟主键直接相关,而不是简介相关
公司—用户
CompanyInfo
UserInfo ----UserId,UserName,CompanyInfoId,CompanyName(冗余字段)
冗余字段:查询很便捷(查询到用户就能知道是哪个公司),更新不方便(定时作业,更新时候
去维护冗余字段);
在违反这个三大范式的时候回带来方便;主要根据项目的实际情况;

4.设计工具

  1. PowerDesigner
  2. Workbench
  3. Datablau Data Modeler
    PowerDesigner可以直接生成sql语句,也可以从数据库生成一个E-R
    PowerDesigner工具下载
    提取码:zx40

5.设计习惯

  1. 命名:尽量做到首字母大写,(帕斯卡命名规范/驼峰规则) 推荐帕斯卡,下划线
    坚决抵制:中文,提倡使用英文单词,抵制汉语品拼音
  2. 主键: 建议大家只是用来做为一个数据的标识,尽量不要让主键具有具体的业务含义;(int/bigint
    类型)默认带有聚集索引;主键查询效率很高;建议尽量让计算机生成;按照规则生成
    a.自增主键:数据库自动生成,int/bigint,Sqlserver默认聚集索引(最快的),int主键Id一旦
    生成不能再次修改;
    电商系统—订单–订单主键Id—int/bigInt自增Id,用户在查看订单的时候,就可以看到Id,容
    易泄露一些商业机密;容易让竞争对手获取订单数量;
    问题:
  3. 迁移,主键Id不好维护
  4. 容易泄露信息
    优势:查询性能高,存储占用空间少
    b.联合主键:多个字段组合起来确定数据唯一(不推荐)
    c. Guid:全球唯一,插入数据库也可以设置成系统自动升,也可以自己生成;
    优势:数据迁移方便;没有聚集索引(查询效率会比较低)
    劣势:(查询效率会比较低),存储空间占据也会大一些
  5. 外键:描述数据关系+约束
    严格约定数据的关系,级联删除,级联更新,导入数据的时候也很麻烦;
    建议:如果系统要求严格数据,可以使用外键;
    也可以通过程序来约束;虚拟外键;不是通过数据库来完成数据的约束
    合理使用,建议大家不要使用;大型系统架构,数据本来就是性能的第一瓶颈,尽量少让数
    据库做事儿;

PS:如果数据库主键ID要往其它库同步的时候,可以通过去掉主键,更新完后再把主键加上。或者进行查询更新。

如何使用?

详细使用地址

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/839201
推荐阅读
相关标签
  

闽ICP备14008679号