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等底层都用到了数据结构,主要的有队列,还有链表,学习数据 ...
随机推荐
- C#取得程序的根目录以及判断文件是否存在
一:获取根目录的方法 取得控制台应用程序的根目录方法方法1.Environment.CurrentDirectory 取得或设置当前工作目录的完整限定路径方法2.AppDomain.CurrentDo ...
- python面试题——爬虫相关
1.接触过几种爬虫模块 urllib.requests这两种爬虫模块. 2.robots协议是什么? 它就是一个防君子不防小人的协议,网站有一些数据不想被爬虫程序爬取,可以编写robots协议文件,明 ...
- (生产)better-scroll - 下拉刷新
Options 参数 startX: 0 开始的X轴位置 startY: 0 开始的Y轴位置 scrollY: true 滚动方向为 Y 轴 scrollX: 'true' 滚动方向为 X 轴 cli ...
- Linux pptpd 的 iptables 包过滤设置
用Centos架设了一台pptpd vpn服务器,信息如下: 服务器IP 192.168.100.1 /24 网关 192.168.100.254(NAT防火墙,将 <外网IP>:1723 ...
- python下载文件
import urllib import urllib2 import requests url = "http://www.blog.pythonlibrary.org/wp-conten ...
- 多路复用select poll epoll
I/O 多路复用之select.poll.epoll详解 select,poll,epoll都是IO多路复用的机制.I/O多路复用就是通过一种机制,一个进程可以监视多个描述符,一旦某个描述符就绪(一般 ...
- angularjs ng-if 慎用 备忘
ng-if.ng-show一般情况下可以通用,二者的最明显区别就是: ng-if判断为false时,页面dom节点不会被创建,其子节点下也不会渲染,从而也就加快了dom的加载速度:ng-show则仅是 ...
- 炫酷的Html+css (一)
博客园在别的 博主看到一个样式, 里面有一段这样的 正方体旋转的 动态图 吸引了我. 找博主要了代码, 贴出来 与大家共享. 鼠标放上去会展开 一大一小两个正方体, 鼠标悬浮上去, 外面的正方体会展开 ...
- Moodle-3.1.2 (Ubuntu 16.04 )
平台: Ubuntu 类型: 虚拟机镜像 软件包: moodle-3.1.2 commercial education moodle open-source 服务优惠价: 按服务商许可协议 云服务器费 ...
- 聪明的Azure CDN,帮你找到云端捷径
你知道吗?身处上海和纽约的两个用户同时通过网络收看“春晚”直播,纽约播放得可能比上海还要更流畅,这当然不是因为纽约距离北京的直播机房更近或者网速更快,而是因为大年夜在大洋彼岸围观“春晚”的观众相对较少 ...



