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等底层都用到了数据结构,主要的有队列,还有链表,学习数据 ...
随机推荐
- Devexpress Xtrareport 创建主从报表
效果 xtrareport 布局 From 代码 private DataSet Getdata() { DataSet ds = new DataSet(); //config配置字符串 strin ...
- 基于HTTP协议之WEB消息实时推送技术原理及实现
很早就想写一些关于网页消息实时推送技术方面的文章,但是由于最近实在忙,没有时间去写文章.本文主要讲解基于 HTTP1.1 协议的 WEB 推送的技术原理及实现.本人曾经在工作的时候也有做过一些用到网页 ...
- Dictionary and KeyValuePair.
简单一句话: Dictionary 是 由 KeyValuePair结构 组成的集合 The Dictionary<TKey, TValue>.Enumerator.Current pro ...
- Android 切换主题换肤实现
思路以及实现 1.主题的切换以及实现 首先我们先来明确个概念,现在我所说的切换主题,就切换整个app的颜色风格,当然也有少部分的图片的切换.注意哦 我这边说的是少部分图片哦!如果是大面积的换图片的吧! ...
- Linux文件属性与权限
一.在Linux里面,任何一个文件都具有“User,Group,Others”(用户.用户组.其他人)三种身份 二.用户组最有用的功能之一,就是当你在团队开发资源的时候,且每个账号都可以有多个用户组的 ...
- Spark资源管理
Spark资源管理 1.介绍 Spark资源管控分为spark集群自身可支配资源配置和job所用资源配置. 2.spark集群支配资源控制 在spark的conf/spark-env.sh文件中可以指 ...
- ubuntu linux double tab
在terminal中,输入部分指令,再按两下Tab键,可以显示以相关的指令
- myeclipse 10 创建webservice
java 快捷创建webservice 收集一下,方便一下查阅 详情去看一下这个老哥,里面写得非常详细: http://hyan.iteye.com/ -- http://www.cnblogs.co ...
- MySQL入门很简单: 10 mysql运算符
1. 算术运算符 例子: 将t1表中字段a的值进行加法,减法和乘法 2. 比较运算符 注:LIKE经常和通配符"_"和"%"一起使用,"_" ...
- SVN建立分支、代码合并以及常用操作
在项目开发的过程中,现在遇到这样一个问题: 现在是9月份,在同一个项目中我要开发A.B两个模块,A模块是11月份上线,B模块是12月份上线,但是SVN上的trunk(主干)上的代码必须是上线的. 假设 ...