14.sql server数据库设计的重要性(by-朝夕)
Database
- 前言 数据库设计工具
- 为什么要用建模工具?
- 1.数据库设计的重要性
- 2.开发工具
- 3.数据库三大范式
- 4.设计工具
- 5.设计习惯
- 如何使用?
前言 数据库设计工具
- PowerDesigner是Sybase的企业建模和设计解决方案。它可以用来话ER图。
- ER图是什么呢?E-R图也称实体-联系图(Entity Relationship Diagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。它是描述现实世界关系概念模型的有效方法。是表示概念关系模型的一种方式。
为什么要用建模工具?
用它可以画出表与表之间的关系,详细的介绍。如果布置开发任务,可以看图说话,比打开表一个个的看要好给人叙述。对吧?
1.数据库设计的重要性
要谈数据库性能—直接和数据库设计挂钩;
如果不合理-----后续的开发,升级的时候,完全去开不下去;
关系型数据库:存储信息+描述关系;
2.开发工具
PowerDesigner+Microsoft SQL Server Management Studio 18 2012以上;
设计
- 需求分析,明白需要存储什么
- 大概设计阶段-----E-R图,解决多方沟通问题
- 详细设计----精确到每一个字段
- 关系
表和表之间的关系 - 一对一:一个—身份证 ,一夫一妻,数据表垂直切分:相同的主外键
- 一对多:订单—多个商品; 省----市,国家—公民; 主外键来体现
- 多对多:学员----课程,家长—子女 ,用户–菜单 一般情况下:中间表/关系表
3.数据库三大范式
范式:建议、不是说绝对的要遵循
a. 第一范式:
一范式:每一个列都保持原子性,不可分割;
从表字段的角度来说讲:用户----多个电话:座机、手机号码1、手机号码2
UserInfo-----Detail(JSON格式的字符串----这个用户的所有信息)------查询快—更新慢
从字段的角度来谈单一职责,一个列只存储一个信息—可以来3个字段
优点:更新的时候快,查询也不影响
缺点:部分场景更新成本比较高
b.第二范式:
二范式:在第一范式的基础上,每一列和主键相关; 要求要有主键
Class–班级 一个列存储班级,一个列存储学生
Student —学生,
【不推荐】 都存储一个表,一个字段表示班级,另一个字段表示学员;
推荐使用多个表来存储,学员一个表,班级一个表;主外键的关系来关联;
从每一条记录(对象)的角度来谈单一职责;
c.第三范式:
三范式:每一列的跟主键直接相关,而不是简介相关
公司—用户
CompanyInfo
UserInfo ----UserId,UserName,CompanyInfoId,CompanyName(冗余字段)
冗余字段:查询很便捷(查询到用户就能知道是哪个公司),更新不方便(定时作业,更新时候
去维护冗余字段);
在违反这个三大范式的时候回带来方便;主要根据项目的实际情况;
4.设计工具
- PowerDesigner
- Workbench
- Datablau Data Modeler
PowerDesigner可以直接生成sql语句,也可以从数据库生成一个E-R
PowerDesigner工具下载:
提取码:zx40
5.设计习惯
- 命名:尽量做到首字母大写,(帕斯卡命名规范/驼峰规则) 推荐帕斯卡,下划线
坚决抵制:中文,提倡使用英文单词,抵制汉语品拼音 - 主键: 建议大家只是用来做为一个数据的标识,尽量不要让主键具有具体的业务含义;(int/bigint
类型)默认带有聚集索引;主键查询效率很高;建议尽量让计算机生成;按照规则生成
a.自增主键:数据库自动生成,int/bigint,Sqlserver默认聚集索引(最快的),int主键Id一旦
生成不能再次修改;
电商系统—订单–订单主键Id—int/bigInt自增Id,用户在查看订单的时候,就可以看到Id,容
易泄露一些商业机密;容易让竞争对手获取订单数量;
问题: - 迁移,主键Id不好维护
- 容易泄露信息
优势:查询性能高,存储占用空间少
b.联合主键:多个字段组合起来确定数据唯一(不推荐)
c. Guid:全球唯一,插入数据库也可以设置成系统自动升,也可以自己生成;
优势:数据迁移方便;没有聚集索引(查询效率会比较低)
劣势:(查询效率会比较低),存储空间占据也会大一些 - 外键:描述数据关系+约束
严格约定数据的关系,级联删除,级联更新,导入数据的时候也很麻烦;
建议:如果系统要求严格数据,可以使用外键;
也可以通过程序来约束;虚拟外键;不是通过数据库来完成数据的约束
合理使用,建议大家不要使用;大型系统架构,数据本来就是性能的第一瓶颈,尽量少让数
据库做事儿;
PS:如果数据库主键ID要往其它库同步的时候,可以通过去掉主键,更新完后再把主键加上。或者进行查询更新。
如何使用?
详细使用地址
14.sql server数据库设计的重要性(by-朝夕)相关推荐
- 【学习记录】第一章 数据库设计-《SQL Server数据库设计和开发基础篇视频课程》...
一.课程笔记 1.1 软件开发周期 (1)需求分析阶段 分析客户的业务和数据处理需求. (2)概要设计阶段 设计数据库的E-R模型图,确认需求信息的正确和完整. /* E-R图:实体-关系图(Ent ...
- 第6章 SQL Server数据库设计
6.1. 概述 数据库设计是指对于给定的一个应用环境,构造最优的数据库模式,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求). 可以将数据库设计理解成三个要素:应用环境.数据库模式 ...
- SQL Server 数据库设计
一.数据库设计的必要性 在实际的软件项目中,如果系统中需要存储的数据量比较大,需要设计的表比较多,表与表之间的关系比较复杂,那我们就需要进行规范的数据库设置.如果不经过数据库的设计,我们构建的数据库不 ...
- SQL SERVER数据库设计与现实
2013-05-05数据库设计 一.数据库系统的相关概念: 1.数据: 数据是对客观休息的一种描述,它是由能被计算机识别与处理的情况.字符等符号结构的集合,即数据库是指描述事物的符号记录. 2.数据库 ...
- SQL Server数据库设计
一.实验目的 掌握数据库设计的方法 二.实验操作方法和步骤 自定义主题,设计数据库,要求有外键关联 ① 建立数据库"教务系统管理",新建表"学生基本信息".&q ...
- SQL Server 数据库设计(ER图)
用户表(User) ID 用户编号,主键 UserName 用户名 UserPwd 用户密码 Lever 用户级别 Ison 是否在线 订单表(Order) ID 订单号,主键 UuserId 客户编 ...
- vfp spt连接mysql_VFP中用SPT访问SQL Server数据库_mysql
VFP因它简单易学,可快速建立应用软件而深受广大程序员喜爱,但其数据库系统不安全也令广大用户非常头痛.随着MS SQL Server数据库系统的推广应用,其强大的安全性能普遍受到好评.笔者在长期的编程 ...
- 使用PowerDesigner 设计SQL Server 数据库
工具: Sybase PowerDesigner 12.5 Microsoft SQL Server 2005 第一步:概念数据模型 打开PowerDesigner 软件,设计"概念数据模 ...
- SQL Server数据库技术大全——14讲 执行计划
SQL Server数据库技术大全--14讲 执行计划 讲解了如何查看统计信息,如何查看执行计划以及如何简单的优惠数据库. [hjp2=500,375,true]http://player.youk ...
最新文章
- 浅说 XSS 和 CSRF
- Spring JdbcTemplate的queryForList(String sql , Class<T> elementType)返回非映射实体类的解决方法
- python 私有和保护成员变量如何实现?—— 单下划线 开始的成员变量叫做保护变量,意思是只有类实例和子类实例能访问到这些变量; 双下划线 开始的是私有成员,意思是只有类对象自己能访问...
- 06:甲流疫情死亡率
- 发现自己的代码写的越来越玄幻了
- 达摩院 2020 预测:工业互联网超融合来袭!
- qdir安装 多窗口资源管理软件
- java 日期calendar_Java中用Calendar类计算周和周的起始日期(转)
- Navsoso引领HUD抬头导航潮流
- 手机号归属地区编码_Excel隐藏手机号中间4位的6种方法,你见过几种?
- Explicit 关键字和各种类型转换(转)
- oracle磁带库清洁带标签,分享那些在磁带库上爬过的坑
- xml文件中SQL语句的大于号、小于号、等于号的转义问题
- 老生常谈-forwar的与redirect的区别与联系
- laravel 上传图片
- 广东省公共资源交易平台逆向分析
- ArcGIS Server中的各种服务
- atca背板_高速背板及相关标准介绍
- Metronic-全球销量第一的HTML管理后台模版
- 嵌入式端音频开发(基础篇)之 1.5 opus应用指南
热门文章
- TreeView节点设置图标
- linux自动拉黑服务,CCKiller:Linux轻量级CC攻击防御工具,秒级检查、自动拉黑和释放...
- 【算法练习】投篮大赛
- 正当防卫4无法启动程序因为计算机中丢失,正当防卫4缺少dll文件解决方法介绍-正当防卫4epic版缺少dll文件怎么解决_牛游戏网...
- Executor多线程框架学习笔记(五):FutureTask
- vue 前端配置按钮权限
- linux查看/打开/关闭防火墙
- 刷主板bios改变机器码_双十一年终狂欢购 热门主板推荐 - 业界动态
- 五一假期怒肝一天大厂Redis面试高频问点,这解析不全你找我!
- stc15w4k系列单片机问题总结