1. 数据库(database,简称DB),是一个有结构的、集成的、可共享的统一管理的数据集合,不仅有数据本身,还有相关数据之间的关系,主要的研究方向是如何存储、使用和管理数据;
2. 有结构的:目前常用的数据库均是以关系模型来组织数据的,可以理解为一张二维表;
集成的:数据库集中放置存放着企业各种各样的数据,没有数据冗余(没有重复);
共享的:数据库中的数据可以被不同的用户使用;
统一管理的:统一有DBMS管理,任何数据访问都是通过DBMS来完成的;
3. 数据库管理系统:database management system,简称DBMS,是一种数据库管理的商品软件,提供了操作数据库的命令,即SQL命令;
4. 数据库管理系统的层次结构由高级到低级依次为应用层、语言翻译处理层、数据存取层、数据存储层、操作系统;
5. 常用的关系型数据库管理系统:Oracle(最早的数据库管理系统)、SQL Serevr(支持客户机与服务器结构,完全SQL语言,非专业难度大)、DB2(在金融系统应用最广泛)、MySQL()、Access(提供图形化管理,集成在Access中)、sqlite3;
6. 数据库系统的三级模式结构:数据库的三级模式结构是指数据库系统由外模式、模式、内模式三级组成;
外模式:也称作子模式或用户模式,是数据库用户的数据视图、只显示与其有关的数据,外模式是模式的子集,一个模式可以有多个外模式,一个应用程序也只能使用一个外模式;例如一个机电专业的学生在图书馆管理系统(DBMS)只可以查询到工科相关数据,查询不到艺术类书籍,就是一种外模式;
模式:也称作逻辑模式或概念模式,表示整体数据库全体数据的逻辑结构,是数据项值的框架,通常设置有访问控制、保密定义、完整性检查等内容;例如,整个图书馆的每一层图书都是一样的管理模式,模式只有一种;
内模式:也称作存储模式,就是说以什么样的形式存储数据,每一列数据怎么存储,是char、还是integer,一个数据库只有一个内模式;
7. 两种映射
(1)外模式与模式之间:外模式更改,模式不必要更改,相互之间具有逻辑独立性;(例如,增加新的数据类型、新的数据项、新的关系等),由数据库管理员对各个外模式/模式的映像作相应改变,可以使外模式保持不变,从而应用程序不必修改,保证了数据的逻辑独立性;例如系统给机电专业的学生增加可以查询艺术类书籍的权限(改变映射),外模式改变,但是模式不变(因为模式有艺术类的书籍),但是机电专业的学生要求增加农学类的书籍,那么因为模式里面没有,则模式也要改变;
(2)模式与内模式之间:双方之间都只有一种,保持了数据的屋里独立性;
8. 数据库系统结构
(1)单用户数据库系统:安装在一台计算机上,由一个用户独占;
(2)主从式结构:一个主机带多个终端的多用户结构;
(3)分布式结构:数据在逻辑上是一个整体,但是物理地分布在不同的结点上,多个数据库服务器通过网络连接起来;
(4)客户、服务器结构:客户端的用户请求被传送到服务器,服务器进行处理后,只将结果返回给用户(而不是整个数据),从而显著减少了网络上的数据传输量;
9. 关系型数据库的关系术语和定义
(1)关系(relation):一个关系就是一张二维表;
(2)元组:表中的行,一行就是一个元组,也称作一个记录;
(3)属性:一列的列名,也称作一个字段;一个表可以有多行,也就是有多列;
(4)域(domain):每一列的数据取值范围,与列的数据类型强相关;
10. 关系的候选键、主键、外键
(1)可有/可不设置,即选出正在使用的候选键,就是主键,一般体现在创建表中在列的字段名和数据类型后加一个“primary key”;一个表只能有一个主键;例如学生表中的学号(不重复);
(2)候选键:可以唯一标识一行,即此列无重复项,候选键可以是一列,或者也可以是某几列的组合;
(3)R1表中一列或列组合是R2表中的主键,则R1是R2的外键,通过外键可以建立联系,可以帮查错;
11. 嵌入式存储需求:便捷信息存储和查询功能;
(1)高性能嵌入式系统:高可靠性通常通过备份、冗余等手段;实时性较高;多平台适应性;——航空航天、电信和网络设备、工业自动化控制;
(2)中等嵌入式系统:广泛的平台适应性;——车载电子、机器人、GPS
(3)微嵌入式环境:多样的存储设备,对查询相应的时间要求不高,满足人机交互即可;
(4)微微嵌入环境:对资源的占用达到最小限度;——智能卡;
12. sqlite3简介
(1)sqlite是一个开源的嵌入式关系型数据库,特点有①可移植性好,很容易使用;②体量小,高效可靠;③可以嵌入到使用它的应用程序中,共同使用相同的进程空间;和程序一起编译好了;多个应用程序可以同时操作同一个数据库;
(2)sqlite基本组成:①接口(interface),所有程序均是通过接口与sqlite交互;②编译器(由分词器、分析器、代码生成器、分析器生成器等组成);③虚拟机(主要是进行数据库语言操作);④后端(由B-tree、页缓冲、操作系统接口组成);
13. sqlite3 优势
(1)内存占用量小;
(2)支持视图操作,有可视化工具;
(3)不依赖其他库;
(4)可以将数据放到单个文件;
(5)为c/c++提供了接口;