JAVA / MySql 编程—— 第一章 数据库的设计
1、 数据库设计:将数据库中的数据实体及这些数据实体之间的关系进行规划和结构化的过程;
良好的数据库设计: 节省数据的存储空间 能够保证数据的完整性 方便进行数据库应用系统的开发 |
糟糕的数据库设计: 数据冗余、存储空间浪费 内存空间浪费 数据更新和插入的异常 |
2、 数据库设计的步骤:
1、 需求分析阶段:分析客户的业务和数据处理需求 |
2、概要设计阶段:设计数据库的E-R模型图,确认需求信息的正确和完整 |
3、 详细设计阶段:将E-R图转换为多张表,进行逻辑设计,确认各表的主外键,并应用三大范式审核数据库结构 |
4、 代码编写阶段:物理实现数据库,编码实现应用 |
5、软件测试阶段:…… |
6、 安装部署:…… |
3、 数据库分析的步骤:
1、 收集信息:与该系统有关人员进行交流、座谈,充分了解用户需求,理解数据库需要完成的任务 |
2、 标识实体(Entity):标识数据库要管理的关键对象或实体,实体一般是名词,一个实体只描述一件事,不能出现含义相同的实体 |
3、 标识每个实体需要存储的详细信息;标识每个实体的属性(Attribute),在进行实体属性分解时,含义相同的成员信息不能重复出现。 |
4、 标识实体之间的关系(Relationship):关系型数据库有一项非常强大的功能,即它能够关联数据库中各个项目的相关信息; |
4、E-R图:
符号 |
含义 |
实体(集),一般是名词 |
|
属性(集),一般是名词 |
|
联系(集),一般是动词 |
|
用来连接属性和实体集,也用来连接实体集和联系集 (直线是可以有方向的(在末端有一个箭头),用来表示联系集的映射基数) |
●实体:现实世界中具有区分其他事物的特征或属性并于其他事物有联系的事物;
●属性:实体的特征;
●联系:两个或多个实体之间的联系;
●映射基数:一对一,一对多,多对一,多对多;
●实体关系图;
5、关系数据库模式:用二维表的形式表示实体和实体间联系的数据模型即关系模式;
●关系数据库模式是对关系数据结构的描述;
◆形式:R(U) 或 R(A,B)
★R 表示属性集合,A,B分别表示U在中的属性;
●E-R图转换为关系模式的步骤:
1. 把每个实体都转化为关系模式R(U) 或 R(A,B)形式
2. 建立实体间联系的转换;
6、 数据规范化:
●不合规范的表设计
信息重复
更新异常
插入异常(无法正确表示某些信息)
删除异常(丢失有效信息)
7、使用三大范式规范数据库表的设计:(Normal Formate)
◆第一范式 (Normal Formate ,1NF):
★第一范式的目标是确保每列的原子性,如果每列都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF);
◆第二范式 (Normal Formate ,2NF):第二范式要求每个表只描述一件事情;
★目标:确保表中的每列都和主键相关,如果一个关系满足第一范式(2NF),并且除了主键以外的其他列全都依赖于该主键;
◆第三范式 (Normal Formate ,3NF):
★目标:确保每列都和主键直接相关联,而不是间接相关联,如果一个关系满足2NF,并且除了主键以外的其他列都不传递依赖于主键列,列和列之间不存在相互依赖关系,则满足第三范式(3NF);
8、规范化和性能的关系:
● 为满足某种商业目标,数据库性能比规范化数据库更重要
1、通过在给定的表中添加额外的字段,以大量减少需要从中搜索信息所需的时间
2、通过在给定的表中插入计算列(如成绩总分),以方便查询
• 在数据规范化同时,要综合考虑数据库的性能
9、 数据库的完整性:数据库完整性(Database Integrity)是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。
数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。
数据库完整性约束可以通过DBMS或应用程序来实现,基于DBMS的完整性约束作为模式的一部分存入数据库中。
通过DBMS实现的数据库完整性按照数据库设计步骤进行设计,而由应用软件实现的数据库完整性则纳入应用软件设计(本文主要讨论前者)。
10、数据库完整性的作用:
1.数据库完整性约束能够防止合法用户使用数据库时向数据库中添加不合语义的数据。
2.利用基于DBMS的完整性控制机制来实现业务规则,易于定义,容易理解,而且可以降低应用程序的复杂性,提高应用程序的运行效率。同时,基于DBMS的完整性控制机制是集中管理的,因此比应用程序更容易实现数据库的完整性。
3.合理的数据库完整性设计,能够同时兼顾数据库的完整性和系统的效能。比如装载大量数据时,只要在装载之前临时使基于DBMS的数据库完整性约束失效,此后再使其生效,就能保证既不影响数据装载的效率又能保证数据库的完整性。
4.在应用软件的功能测试中,完善的数据库完整性有助于尽早发现应用软件的错误。
JAVA / MySql 编程—— 第一章 数据库的设计的更多相关文章
- Java 面向对象编程——第一章 初识Java
第一章 初识Java 1. 什么是Java? Java是一种简单的.面向对象的.分布式的.解释的.安全的.可移植的.性能优异的多线程语言.它以其强安全性.平台无关性.硬件结构无关性.语言简 ...
- JAVA / MySql 编程——第二章 初始MySQL
1. MySQL: ● MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL最流行的关系型数据库管理系统, ...
- java并发编程--第一章并发编程的挑战
一.java并发编程的挑战 并发编程需要注意的问题: 并发编程的目的是让程序运行的更快,然而并不是启动更多的线程就能让程序最大限度的并发执行.若希望通过多线程并发让程序执行的更快,会受到如下问题的挑战 ...
- 【程序员翻身计划】Java高性能编程第一章-Java多线程概述
目标 重点: 线程安全的概念 线程通信的方式与应用 reactor线程模型 线程数量的优化 jdk常用命令 Netty框架的作用 难点 java运行的原理 同步关键字的原理 AQS的抽象 JUC的源码 ...
- Java面向对象编程 第一章 面向对象开发方法概述
一.软件开发经历的生命周期: ①软件分析 ②软件设计 ③软件编码 ④ 软件测试 ⑤ 软件部署 ⑥软件维护 二.为了提高软件开发效率,降低软件开发成本,一个优良的软件系统应该具备以下特点: ① 可重用性 ...
- 第一章 数据库概述、MySQL的安装和配置
第一章 数据库概述.MySQL的安装和配置 1.为什么要使用数据库 最早是纸质文件来存储数据 缺点:不易保存,占用空间大 计算机出现以后,采用软件来进行保存(excel) 缺点:容易损坏 文件 ...
- MySQL----MySQL数据库入门----第一章 数据库入门
第一章 数据库入门 1.1 数据库基础知识 1.1.1 数据库概述 数据不仅包括普通意义上的数字,还包括文字.图像.声音等.也就是说,凡是在计算机中用来描述事物的记录都可称作数据. 数据库的基本特点: ...
- Windows核心编程第一章.错误处理
Windows核心编程第一章,错误处理. 一丶错误处理 1.核心编程学习总结 不管是做逆向,开始做开发.在Windows下.你都需要看一下核心编程这本书.这本书确实写得很好.所以自己在学习这本书的同时 ...
- 数据结构(Java语言描述)-第一章:概述
第一章 概述 1.0 序言 自己为啥要学数据结构嘞,我觉得主要有以下三个原因: 前段时间在看并发编程时,发现aqs,corrunthashmap等底层都用到了数据结构,主要的有队列,还有链表,学习数据 ...
随机推荐
- QML 读取本地文件内容
QML 对本地文件的读写 QML 里似乎没有提供直接访问本地文件的模块,但是我们能够自己扩展 QML,给它加上访问本地文件的能力. Qt 官方文档对 QML 是这样介绍的: It defines an ...
- REST API 自动化测试 利器Rest Assured(API接口自动化测试框架体系)
现在,越来越多的 Web 应用转向了 RESTful 的架构,很多产品和应用暴露给用户的往往就是一组 REST API,这样有一个好处,用户可以根据需要,调用不同的 API,整合出自己的应用出来.从这 ...
- 查看SQL Server中的锁表及解锁
有时候系统很慢,有可能是SQL Server数据库中某些表被锁定 --查看被锁表(需查多几次,有些临时锁很快会自动解锁): SELECT request_session_id AS spid, OBJ ...
- 《Google软件测试之道》之学习笔记01
Google软件测试介绍 软件测试团队->工程生产力(Engineering Productivity) http://googletesting.blogspot.com/2011/01/ho ...
- extjs 6
因为最近公司要写一个项目前台所以开始学习extjs前端框架,希望一起共勉. 那么我们的教程就从 Hello World 讲起. helloWorld.js Ext.onReady(function ...
- 对数组排序进行"洗牌"(随机排序)
这段代码在这里使用Fisher Yates洗牌算法给一个指定的数组进行洗牌(随机排序). function shuffle(arr) { var i, j, tem ...
- css3 走马灯效果
纯css3实现了一个正六边形的走马灯效果,记录一下css3动画的学习情况,效果如下: 主要用到的css3技术有:keyframes.perspective.perspective-origin.tra ...
- Azure 5 月新公布
Azure 5 月新发布:CDN 高级版服务降价,MySQL Database 高级版本和新功能,以及应用程序网关中的 WAF 层发布 Azure CDN 高级版服务自 2017 年 5 月 1 ...
- 类型信息(RTTI和反射)——反射
运行时类型信息可以让你在程序运行时发现和使用类型信息. 在Java中运行时识别对象和类的信息有两种方式:传统的RTTI,以及反射.下面就来说说反射. 重点说说通过反射获取方法以及调用方法,即类方法提取 ...
- Laravel 获取当前 Guard 分析 —源自电商购物车的实际需求
iBrand 产品中关于购物车的需求比较复杂,我们基于 overture/laravel-shopping-cart 扩展出了更加符合电商需求的购物车包,之前有文章进行过简单的介绍: Laravel ...