数据库相关概念
数据库:长期储存在计算机内的有组织、可共享的相关数据的集合
数据库管理系统:由一个互相关联的数据的集合和一组用以访问这些数据的程序组成。如DB的建立、查询、更新等。
数据库系统:通常指带有数据库的计算机应用系统,包括数据库、相应的硬件、软件和操作人员。
数据库系统包括了DBMS和DB
数据模型与模式
数据模型主要有关系模型,实体-联系模型、基于对象的模型、半结构化数据模型
关系模型
就是在mysql中存储数据的模型
关系:一张数据库表
元组:表中的一行
属性:表中的一列
主码:能唯一区分元组的属性
外码:连接本表与其他表
实体集:具有相同类型属性的一个实体集合,类似于一张关系表里的所有实体。
实体联系模型
即E-R图,主要包括如下几个构件:
- 矩形代表实体集
- 菱形代表联系集
- 椭圆代表属性,其中构成主码的属性用下划线标明
基于对象的模型
广泛应用于python、java等面向对象语言,这里我列出一个django中数据库设计的代码。
我将Reader看作一个表,也就是一个关系,然后分别设计了
c
a
r
d
I
d
,
n
a
m
e
,
s
e
x
,
s
t
a
t
e
,
c
a
t
e
g
o
r
y
,
l
e
v
e
l
cardId,name,sex,state,category,level
cardId,name,sex,state,category,level等属性以及他们的约束。
关系数据库三个完整性约束:
实体完整性,参照完整性,用户定义完整性
class Reader(models.Model):
cardId = models.CharField(max_length=16,verbose_name='卡号')
name = models.CharField(max_length=64,verbose_name='姓名')
sex = models.CharField(max_length=16,verbose_name='性别')
state = models.CharField(max_length=32,verbose_name='单位')
category = models.CharField(max_length=32,verbose_name='类型')
level = models.CharField(max_length=16,verbose_name='级别')
def __str__(self):
return self.name
半结构化数据模型
XML是将数据库的信息标记在一个文件中,也就是可扩展标记语言。
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
数据库语言
数据库操纵语言DML:主要是增删改查,其中查询是最为复杂的。
s
e
l
e
c
t
<
属
性
名
⋅
⋅
⋅
>
f
r
o
m
表
w
h
e
r
e
谓
词
条
件
o
r
d
e
r
b
y
顺
序
g
r
o
u
p
b
y
分
组
h
a
v
i
n
g
分
组
后
的
条
件
select <属性名···> from \ 表 \\ where \ 谓词条件 \\ order\ by顺序\\group \ by \ 分组\\having \ 分组后的条件
select<属性名⋅⋅⋅>from 表where 谓词条件order by顺序group by 分组having 分组后的条件···
数据库定义语言DDL:主要是创建、修改、删除、表结构
关系模型介绍
关系的模式是指它的逻辑设计
关系的实例是指它的特定时刻的内容
关系代数
笛卡尔积:输出两个关系所有的匹配的元组对。
选择:输出符合条件的元组
投影:输出指定的属性,而不是元组的全部属性
自然连接:将一张表与另一张表的相同的属性进行匹配,将属性值相同的元组组合成一张新的表
后面我会详细的补充关系代数运算和SQL查询语言,这里就简单提一下。