`
darrenzhu
  • 浏览: 782324 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数据库系统基本概念

阅读更多
数据模型(Data Model)是描述数据、数据联系、数据语义以及一致性约束的概念工具的集合。

关系模型(Relational Model)用表(table)的集合来表示数据和数据间的联系。

关系数据库是表(table)的集合,每个表都有唯一的名字。表中一行代表的是一系列值之间的联系。表就是这种联系的一个集合,表这个概念和数学上的关系概念是密切相关的,这也正是关系数据库名称的由来。

表包含列头(column header)组成,列头就称为属性(attribute)。每个属性有一组允许的值,称为属性的域(domain)。

假设有n个属性域(domain),D1, D2, ..., Dn,一般地说,有n个属性的表(table)是
D1 x D2 x ... x D(n-1) x Dn 的一个子集。

数学家将关系(relation)定义为一系列域上的笛卡尔积的子集。这一定义域我们对表的定义几乎是全部相符的。我们用数学名称关系(relation)和元组(tuple)来代替表(table)和行(row)。 元组变量(tuple variable)就是代表元组的变量。

数据库模式(database schema)是数据库的逻辑设计。

数据库实例(database instance)是给定时刻数据库中数据的一个快照。

关系的概念对应于程序设计语言中变量的的概念,而关系模式(relation schema)的概念对应于程序设计语言中类型定义的概念。

我们通常给关系模式一个名字,正如我们在程序设计语言中给类型定义一个名字一样。在我们采用的表示法中,关系的名字由小写字母组成,关系模式的名字以大写字母开头。根据这样的表示法,我们用Account_schema表示关系account的关系模式。因此,
              Account_schema = (account_number, branch_name, balance)
我们用account(Account_schema)表示account是Account_schema上的关系。


超码(super key)是一个或多个属性的集合,这些属性的组合可以使我们在一个关系中唯一地标识一个元组(行)。

超码中可能包含一些无关紧要的属性。如果K是一个超码,那么K的任意超集也是超码。

候选码(candidate key):我们通常只对这样一些超码感兴趣,它们的任意真子集都不能成为超码。这样的最小超码称为候选码。

几个不同的属性集都可以做候选码的情况是存在的。假设customer_name和customer_street的组合足以区分customer关系的各个成员,那么{customer_id}和{customer_name, customer_street}都是候选码。虽然属性customer_id和customer_name组合起来能区分customer元组,但它们的组合并不能成为候选码,因为单独的customer_id属性已是候选码。

主码(primary key):我们用主码来代表被数据库设计者选中的、用来在同一关系中区分不同元组的候选码。码(主码、候选码或超码)是整个关系的性质,而不是一个个元组的性质。

关于连接, 可参考http://www.cnblogs.com/huangfr/archive/2012/06/20/2555530.html
自然连接:首先形成它的两个关系的笛卡尔积,然后基于两个关系模式中都出现的属性上的相等性进行选择,最后还要去除重复属性。

内连接与自然连接基本相同,不同之处在于自然连接只能是同名属性的等值连接,而内连接可以使用using或on子句来指定连接条件,连接条件中指出某两字段相等(可以不同名)。

左外连接(left outer join),先自然连接,然后取出左侧关系中所有与右侧关系的任一元组都不匹配的元组,用空值填充所有来自右侧关系的属性,再把产生的元组加到自然连接的结果上。

右外连接

全外连接(full outer join) 完成左外连接和右外连接运算,并把结果都加到自然连接的结果上。

函数依赖
如果存在模式(loan_number, amount),则loan_number可以作为主码,该规则定义为函数依赖
loan_number -> amount

  • 大小: 82.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics