2011寒假-数据库学习笔记

简介:

第一课:数据库类型

1.1平面文件

适用于:

1,数值小且简单

2,数值不经常变化

3,希望能够使用简单的文本编辑器来更改数值

4,希望保存以前数值的简单历史清单,

5,希望使用工具快速比较两个文件

例如:INI文件(initialization)

1.2关系数据库

适用于:

l 需要在不同的表之间执行复杂的查询和连接.

l 需要执行数据有效性验证,如在其他表中检验相关行的存在.

l 需要为特定的数据有效性验证,如在其他表中检验相关行的存在.

l 希望能够灵活地构建在开始设计项目是本没计划的新查询.

1.3 电子数据表

适用于:

l 数据可以很自然地装配进简单的表格形式.

l 需要在图表中可视化显示数据.

l 终端用户习惯使用电子数据表.

l 终端用户希望能够独自对数据进行实验.

1.4 分级数据库

适用于:

l 数据是自然分级的.

l 需要执行利用分级结构的操作

1.5 xml

适用于:

l 数据是自然分级

l 可用XML工具提供需要的特性.

l 希望获得模式文件能够提供的各种有效性验证.

l 希望能够在支持XML的产品中导入和导出数据.

1.6 网络

适用于:

l 数据本身就是一种网络形式

l 需要对数据执行网络运算,如查找最短路径或计算网络流

l 不需要对数据执行复杂的查询.

1.7 对象

适用于:

l 编程环境和体系结构支持使用对象.

l 不需要对数据执行复杂的查询

1.8 特殊类型数据库

1.面向文档的数据库

2.演绎数据库

3.维度数据库

4.时态数据库

小结

l 平面文件适合存储简单的值或完整的文档,尽管它们不具备并发性和方便更新的特性.

l INI文件适合存储便于查找的简单值,尽管它们不具备并发性和方便更新的特性.

l Windows系统注册表适合存储便于查找的简单值并且能够处理系统设置和用户特定的设置.

l 关系数据库是最常用的数据库类型,它们支持复杂的数据库关系,完善的数据验证.完整性约束,级联更新和删除,特定查询,以及其他许多有用的特性.

l 电子数据表适合绘制图表并且便于以及熟悉它们的用户使用.

l 分级数据库适合存储和操纵分级数据,如组织结构图和族谱图.

l XML文件适合存储分级数据,尽管它们不具备并发性和方便更新的特性.

l 网络数据库适合存储像街道或电话网络这样的网络数据.

l 对象数据库适合将编程对象集成到数据库中.

l 对象关系数据库和对象关系映射系统结合了对象数据库和关系数据库的优良特性.关系数据库之上的对象关系映射层可以在编程人员和数据库开发人员之间提供有益的隔离.

l 面向文档的数据库适用于文档管理系统

l 演绎数据库能够基于数据库中存储的规则和数据执行逻辑推演

l 维度数据库以超立方体的方式考虑数据并且可以方便地基于维度选择来研究数据

l 时态数据库将时间和数据集成在一起,以便能够记录和操作随时间变化的信息.

作业:

1.分级

2.XML

3.INI

4.关系(电子数据表)

5.维度(电子数据表)

6.电子数据表

7.网络(XML)

8.关系

9.对象

10.关系

11.关系

12.关系

13.关系

14.文档

15.平面文件

第二课:关系数据库基础知识

1.1 关系视角

1.2 表,行列

1.3 关系,属性和元组

1.4 键

l 复合键或组合键: 包括不止一个字段的键.

l 超键: 没有两行具有完全相同值的一组列.

l 候选键: 最小的超键

l 唯一键: 数据库用于限定性唯一性的超键.

l 主键: 数据库用来快速定位记录的唯一键.

l 替代键: 不是主键的候选键

l 次键: 用来查找记录但不能保证唯一性的键.

l 外键: 用做一种约束而不是用来查找表的记录

1.5 索引

1.6 约束

l 检查约束

字段级检查约束验证单个列

表级别约束能够检查一个记录的多个字段以查看数据是否有效

1.7 数据库操作

l 选择(Selection)

l 投射(Projection)

l 联合(Union)

l 相交(Intersection)

l 差值(Difference)

l 笛卡尔积(Cartesian Product)

l 连接(Join)

l 相除(Divide)

小结:

l 正式的关系数据库术语,如关系.属性和元组

l 非正式的术语,如表,行,记录,列和字段

l 多种不同的键,包括超键.候选键,和主键

l 可以对列或表施加的各种不同的约束

l 为关系数据库定义的操作

练习:

1.工资大于0和提成等于0 或者没有工资和提成大于0

应该这样说销售员必须要有薪水或业绩的提成,但是不能同时拥有薪水和业务提成

2

属性

字段

关系

行 表

联系 文件

外键

外键

记录 联系

元组

表 行

文件 记录

视图

查询结果

虚拟表

3.是,因为在一列中没有2个相同的值

4.不是,因为在一列中有2个相同的值

5.State,Abbr,Title

6.什么是域? 就是数值的范围

7.Room/FirstName/LastName

8.Room/firstName, Room?lastName

9.Room,First,LastName必须要有值, 房间编号是偶数,Room Is Even

10.Phone,cellPhone 至少要有一个值

第三课:了解客户的需求

1.1 制定计划

l 拿出一个问题清单

l 与客户会面

l 了解重要的人物

l 向客户请教

l 设身处地为用户考虑

l 调研现行业务

l 集体讨论

l 考虑未来

l 搞清客户的思维过程

l 了解客户真正需要什么

l 区分优先次序

l 证实了解的情况

l 撰写需求文档

l 编制用例

l 确定可行性

1.2 拿出一个问题清单

1.2.1 功能

l 系统应该实现什么功能

l 构建此系统的原因是什么?你希望它完成哪些任务?

l 系统应该呈现什么样的外观?请大致绘出用户界面.

l 系统的不同部分分别需要多少响应时间(5s<)

l 需要什么样的报表

l 最终用户是否需要定义新的报表?

l 有那些参赛选手?

l 高级用户和管理员是否需要定义新的报表?

1.2.2数据需求

1.2.3数据完整性

1.2.4安全性

1.2.4环境

1.3 与客户会面

1.4 了解重要人物

1.5 向客户请教

1.6 设身处地地为用户着想

1.7 调研现行业务

1.8 集体讨论

1.9 考虑未来

1.10 搞清客户的思维过程

1.11 了解客户真正的需求

1.12 区分优先次序

1.13 证实了解的情况

1.14 撰写需求文档

1.15 编制用例

1.16 确定可行性

小结:

l 设法确定哪些客户扮演何种角色

l 请教客户以获取信息

l 查找有关用户角色和职责

l 直接观察客户工作并研究他们的现行业务

l 集体谈论并将结果归类成优先级1,2,和3,项目

l 验证你对客户需求的理解

l 编写含有可验证交付成果和用例的需求文档

练习:

1.

客户角色

说明

转变立场的人

最初反对项目的用户通过参与项目开发过程转而支持项目

客户负责人

充分了解客户的需求,并有权作出有效的决定

客户代表

回答您对项目的有关提问

唱反调的人

提供现实性检查并防止团队迷失

执行负责人

推动项目的最高级的客户,愿意与超级恶棍斗争

一般的坏家伙

从让人讨厌的反对者到恶意的破坏者/超级恶棍

临时工作人员

不会长期从事项目的某些人,可能对项目有帮助或对项目并不那么关注

助手/信息提供者

通常会使项目平稳运转的人,不引人关注却很有用

利益相关者

对项目感兴趣的任何人

第四课 将用户的需求转换成数据模型

本课学习要点

l 创建用户界面模型

l 创建语义对象模型

l 创建实体关系模型

l 将这些类型的模型转换成关系模型

1.1数据模型的概念

1.2用户界面模型

1.3语义对象模型

1.3.1类和对象

语言类的名称采用全部大写来书写

语义对象属性采用驼峰命名

1.3.2基数

常见基数

0 为可选参数,1为允许一个值,N为任意值

l 1.1

l 1.N

l 0.1

l 0.N

1.4实体关系模型(ER图)

1.4.1 实体,属性和标识符

实体:矩形,名词

属性:椭圆

关系:菱形,动词

1.4.2 关系

 

注意:每个关系隐式定义了一个反向关系,人驾驶车,反向:车被人驾驶

1.4.3 基数

l 环:(圈或椭圆)表示0

l 线条:一条短线(虚线或竖线)表示1

l 鱼尾纹:圆锥形帐篷表示很多

1.4.3 继承

1.5关系模型

理论

数据库

文件

SOM

ER

关系

文件

实体集合

元组

记录

对象

实体

属性

属性

属性

小结

l 构建用户界面模型来了解数据库需要存储的数据类型

l 构建语义对象模型来研究解决问题时将会打交道的对象

l 构建实体关系图来研究问题中涉及的实体并查看它们的交互方式

l 将语义对象模型和实体关系图转换成关系模型

第五课 提取业务规则

本课简要:

l 业务规则如此重要的原因

l 识别业务规则的方法

l 修改关系模型也隔离业务规则的方法

1.1业务规则的概念

1.2识别重要的业务规则

第六课 规范化数据

本课简要:

l 规划化概念

l 不同类型或级别的规范化解决那些问题

l 规范化数据库的方法

l 如何知道何种级别的规范化最适合你的数据库.

6.1 规范化的概念

从弱到强的排序

l 第一范式(First Normal Form, 1NF)

l 第二范式(Second Normal Form, 2NF)

l 第三范式(Thrid Normal Form, 3NF)

l Boyce-Codd 范式(Boyce-CoddNormal Form, BCNF)

l 第四范式(Fourth Normal From, 4NF)

l 第五范式(Fifth Normal Form, 5NF)

l 域/键范式(Domain/Key Normal Form, DKNF)

6.2第一范式

第七课 设计数据库以支持软件应用程序

本课简要

l 在实际使用中使用数据库更有效可以采取的步骤

l 在用户界面中使验证更容易的方法

l 便于管理不可搜索的数据的方法

7.1 提前规划

7.2将所有事项记录在案

7.3考虑多层体系结构

7.4将域转换成表

7.5重视表

7.6使用三种表

1.存储有关特定类型的对象信息

2.表示两个或多个对象之间的链接

3.查找表

7.7使用命名约定

一.不要在表名称,字段名称内或数据库对象中的其他某个地方使用专用字符

二.如果不同表中的两个字段包含相同的数据,则赋予这两个字段相同的名称

三.强制的命名规则是试用有意义的名称

7.8允许冗余数据

7.8不要包罗万象

小结:

l 提前规划并记录所有事项

l 将域转换为表以帮助用户界面编程人员,并简化域信息的维护

l 重视表并使每个表都执行一个单独的任务

l 使用一些冗余的,非规范化的表来改善性能

第八课 常见的设计模式

l 在对象之间提供不同类型的关联

l 存储数据层次结构和网络

l 处理与时间相关的数据

l 记录用户操作

8.1关联

8.1.1多对多关联
8.1.2多个多对多关联
8.1.3多对象关联
8.1.4重复属性的关联
8.1.5自反关联

8.2时间数据

8.2.1有效日期
8.2.2被删除的对象
8.2.3时效化部分数据

9.3事件记录和锁定

9.3.1审计跟踪
9.3.2全程记录

本文转自 liam2199 博客,原文链接:  http://blog.51cto.com/youxilua/773059 如需转载请自行联系原作者

相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
相关文章
|
7月前
|
存储 关系型数据库 MySQL
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
Linux C/C++ 开发(学习笔记八):Mysql数据库图片存储
146 0
|
7月前
|
关系型数据库 MySQL 数据库
Linux C/C++ 开发(学习笔记七):Mysql数据库C/C++编程实现 插入/读取/删除
Linux C/C++ 开发(学习笔记七):Mysql数据库C/C++编程实现 插入/读取/删除
142 0
|
2月前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
133 6
|
2月前
|
SQL Ubuntu 关系型数据库
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
本文为MySQL学习笔记,介绍了数据库的基本概念,包括行、列、主键等,并解释了C/S和B/S架构以及SQL语言的分类。接着,指导如何在Windows和Ubuntu系统上安装MySQL,并提供了启动、停止和重启服务的命令。文章还涵盖了Navicat的使用,包括安装、登录和新建表格等步骤。最后,介绍了MySQL中的数据类型和字段约束,如主键、外键、非空和唯一等。
74 3
Mysql学习笔记(一):数据库详细介绍以及Navicat简单使用
|
3月前
|
SQL 关系型数据库 MySQL
php学习笔记-连接操作mysq数据库(基础)-day08
本文介绍了PHP中连接操作MySQL数据库的常用函数,包括连接服务器、设置字符集、关闭连接、选择数据库、结果集释放、获取影响行数以及遍历结果集等操作。通过书籍查询的实例演示了如何使用这些函数进行数据库操作,并提供了一个PHP操纵MySQL数据库的模板。
php学习笔记-连接操作mysq数据库(基础)-day08
|
4月前
|
SQL druid Java
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
60 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(下)
|
4月前
|
SQL Java 关系型数据库
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)
154 3
Java数据库部分(MySQL+JDBC)(二、JDBC超详细学习笔记)(上)
|
4月前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(下)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
39 6
|
4月前
|
存储 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(上)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
52 4
|
4月前
|
SQL 关系型数据库 MySQL
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)(中)
Java数据库部分(MySQL+JDBC)(一、MySQL超详细学习笔记)
32 3