关系数据库理论

来源:互联网 发布:女生生日礼物 知乎 编辑:程序博客网 时间:2024/05/16 19:38

关系数据库理论

1.      关系术语和定义

   关系(Relation):一个关系就是一张二维表,每一个关系有一个关系名,可以存储为一个文件。其定义可以描述为的子集叫做域 , ,…, 上的关系,表示为 ,R表示关系的名称,n表示关系的目或度(Degree)。

   元组:表中的行称为元组,一行就是一个元组,对应存储文件中的一个记录。

   属性:关系中的一列称为一个属性。一个属性必须有唯一的属性名,一个关系可以有若干个属性值。

   域(Domain):属性的取值范围,是一组具有相同数据类型的值的集合。

2.      候选键与主键

关系的候选键与主键

(1)候选键

表中某一列(或若干列的最小组合)的值能惟一标识一个行,称该列或列组为候选键。如Students表的学号列,就是一个候选键。

对于一个表,可能有多个候选键 。

候选键取决于应用范围,如给定条件,没有重复的学生姓名,则姓名是学生基本情况表的一个候选键。

(2)主键

如果一个表有多个候选键,数据库设计者通常选择其中一个候选键作为区分行的惟一性标识符,称为主键(primary key,PK)。如果一个表只有一个候选键,那么这个候选键就作为主键。例如,在学生基本情况表中,把学号作为该表的主键。

因为主键是候选键之一,而根据候选键的定义,候选键列上的各个值都惟一,因此主键列上的各个值也都惟一

3.      外键

外键(Foreign Key,FK):若一个表R1中的一个列或列组对应另一个表R2的主键,那么该列或列组称为表R1的外键。

外键可以由一个或多个列组成,可以有重复值

4.      嵌入式数据库综述

(1)      基本要求

v   体积适当

    由于嵌入式系统自身的特点,对数据的存储和程序的运行都有较强的空间限制,所以嵌入式数据库首先应该保障的就是适当的体积。进一步来说就是占用尽量少的ROM、RAM及CPU的资源。

v   可移植性

    嵌入式系统的平台种类繁多,因此嵌入式数据库应有一定的可移植性,以适用于不同的软硬件平台。特别是要考虑到不同存储介质的特性,比如NAND的读特性

v   编程接口简单

    不必要提供完整的SQL和数据库连接方式。

v   代码开源

     开源的代码在产品的开发过程中不仅可以减少开发成本,更重要的是为后期的维护完善和稳定运行都提供了最为彻底的解决方法。

(2)      嵌入式数据库产品

Sybase SQL

Anywhere

Oracle TimesTen

Berkley DB

Pervasive

Jet Engine

Firebird

SQLite

5.      sqlite3简介

(1)简介

SQLite 是一个开源的嵌入式关系数据库,它在2000 年由D. Richard Hipp 发布。SQLite 可移植性好,很容易使用,很小,高效而且可靠。SQLite 嵌入到使用它的应用程序中,它们共用相同的进程空间,而不是单独的一个进程。从外部看,它并不像一个RDBMS,但在进程内部,它却是完整的,自包含的数据库引擎。

SQLite是一个内嵌式的数据库。

数据库服务器就在你的程序中,其好处是不需要网络配置和管理。数据库的服务器和客户端运行在同一个进程中。这样可以减少网络访问的消耗,简化数据库管理,使你的程序部署起来更容易。所有需要你做的都已经和你的程序一起编译好了。

SQLite利用操作系统功能来完成数据的同步和加锁

(2)创建数据库

a).数据库文件格式:test.db

sqlite> sqlite3test.db 

sqlite> createtable test (id integer primary key, value text);

 

名为id的主键列:该列默认具备自动增长的属性;

名为value的简单文本域;

b).储存数据类型

空:这个值为空值

整数:值被标识为整数,依据值的大小可以依次被存储1,2,3,4,5,6,7,8.

实数:所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.

文本:值为文本字符串,使用数据库编码存储(TUTF-8,UTF-16BE or UTF-16-LE).

BLOB: 值是BLOB数据,如何输入就如何存储,不改变格式.

(3)      插入操作

sqlite> insert into test (id,value) values(1,’zhang’);

sqlite> insert into test (id,value) values(2,’wang’);

sqlite> insert into test  (value)  values(‘liang’);

sqlite> insert into test  (value)  values(‘liang’);

(4)      查看数据

sqlite> select * from test;

sqlite> select * from test order by id;(按id排序)

(5)      退出

sqlite> .exit

0 0
原创粉丝点击