数据库系统阶段管理数据的特点有如下方面:
(1)数据结构化
数据库中的数据不再仅仅针对某个应用,而是面向全组织;这句话的意思指早期的文件基本上对应一个application,即文件仍然是面向应用的,那么当不同的应用程序所使用的数据具有共同部分时,也必须建立自己的数据文件,数据不能共享,同时,由于相同数据的重复存储、各自管理,在对数据进行更新操作时,不但浪费磁盘空间,同时也容易造成数据的不一致性。
由于数据库系统不仅描述数据本身,还描述数据之间的联系,记录之间的联系可以用参照完整性来表述,进行多表查询时可以很容易的实现。
(2)数据共享性高、冗余度低
所谓的数据共享是指数据库中的一组数据集合可为多个应用和多个用户共同使用。由于同一组数据可供多个用户或应用共享,这样便避免了同一数据在数据库中重复出现并具有不同值的现象。
(3)数据独立性高
所以数据的独立性是指数据库中的数据与应用程序间相互独立,即数据的逻辑结构、存储结构以及存取方式的改变不影响应用程序
(4)有统一的数据控制功能
1、数据的安全(Security)控制
2、数据的完整性(Integrity)控制
3、并发(Concurrency)控制
4、数据恢复(Recovery)
那么可以看出,一个文件所可能具有的问题,如下所示:
文件:
数据冗余和不一致性
数据访问困难
数据孤立
完整性问题
原子性问题
并发访问异常
安全性问题
DBMS
层次模型
网状模型
关系模型
面向对象模型
关系模型(结构化数据模型)
关系模型
E-R:实体-关系模型(基本成分:实体型 属性 联系(一对一、一对多、多对多))
对象关系模型:基于对象的数据模型
半结构化数据模型XML:扩展标记语言
关系性数据:
表示层:表
逻辑层:存储引擎
物理层:数据文件
如果这个放在操作系统概念上来讲:表示层就是文件,逻辑层就是文件系统,物理层就是数据块。
RDB对象:
约束(例如,更多可自行查看23_03)
域约束:数据类型约束
外键约束:引用完整性约束
主键约束:某字段能唯一标识此字段所属的实体,并且不允许为空
一张表只允许有一个主键
唯一性约束:每一行的某字段不允许出现相同值,可以为空
一张表中可以有多个
检查性约束:age:int
数据存储和查询:
存储管理器:
权限及完整性管理器
事务管理器
文件管理器
缓冲区管理器
查询管理器:
DML解释器
DDL解释器
查询执行引擎
MySQL:
单进程
多线程
守护线程
应用线程
thread reuse(线程重用):数据查询时,为了避免更多的性能降低,在查询完成以后,线程并不会销毁,下一个查询可直接重用这个线程进行查询。
MySQL最大内存使用:32bit:2.7G ; 64bit:不好说~~,所以生产环境中一定要使用64bit。
MySQL对smp(对称多处理器)的支持不好,意味着一条语句查询时只能使用一颗CPU,
这个是一个非常大的缺陷。
关系运算:
投影:只输出指定属性
选择:只输出符合条件的行
自然连接:具有相同名字的所有属性上取值相同的行
笛卡尔积:(a+b)*(c+d)=ac+ad+bc+bd 多表查询时非常有用
并:集合运算
自然连接:
例如:
user.shellid=shell.shellid
有两张表,其中一张表记录了如下内容:
marry 1
tom 2
jerry 3
另外一张表:
1 bash
2 csh
3 zsh
4 ksh
5 tcsh
那么,
marry 1=1 bash
tom 2=2 csh
jerry 3=3 zsh
这种具有等值关系的运算叫做自然连接。
这篇文章部分参考《数据库原理及应用》,由于没有更为结构化、全面的认知,所以这篇文章会有很多缺陷,更多可自行参考其他书籍,以获得详细的解答,这篇文章仅作为最最低下的个人认知,
可完全不看。