关系数据库基于EFCodd 的关系模型。在关系代数介绍了如何查询数据的方法。关系只是一些集合(域)的叉积的子集。
例
我们有以下几套:
DepIds = {1, 2, 3, ...}
EmpIds = {1, 2, 3, ...}
DepNames = {'Engineering', 'Finance', 'Sales', ...}
FirstNames = {'John', 'Walter', 'Mary', 'Roxane', ...}
LastNames = {'Smith', 'Bondy', 'Taylor', ...}
BirthDates = {..., 1950-01-01, 1950-01-02, ...}
Jobs = {'Accountant', 'Programmer', 'Database Administrator', ...}
此外,我们有一组元组
departements = {
(1, 'Engineering'),
(2, 'Finance')}
employees = {
(1, 1, 'John', 'Taylor', 1985-03-22, 'Programmer'),
(2, 1, 'Walter', 'Bondy', 1997-09-11, 'Database Administrator'),
(3, 2, 'Roxane', 'Myers', 1987-12-19, 'Accountant')}
departements
是...的子集
DepIds x DepNames
所以这是一种关系。
employees
是...的子集
EmpIds x DepIds x FirstNames x LastNames x BirthDates x Jobs
所以这也是一种关系。
显然可以通过表实现关系。
数学家为什么称元组为关系?
通常,诸如“ 2小于3”,“ 4等于4”,“ 2在1和3.4之间”,“-1为负”等属性称为关系。
集合A = {1、2、3}上的“小于”关系由子集定义
{(1, 2), (1, 3), (2, 3) }
的
A x A = {1, 2, 3} x {1, 2, 3}=
{ (1, 1), (1, 2), (1, 3),
(2, 1), (2, 2), (2, 3),
(3, 1), (3, 2), (3, 3) }
以类似的方式,其他关系可以看作是互积的子集。“ x小于y”,“ x等于y”是二进制关系,因此由一对对定义。“在y和z之间的x是三元关系”,因此由一组三元组定义。“ x为负”是一元关系,因此由一组单例定义。
我们上面定义的部门元组是二元关系,雇员关系是六元关系。