关系模型是最流行的逻辑数据模型,它是SQL数据库的基础。
关系模型是基于两个简单的概念。
- 表
- 关系
关系模型可以追溯到1969年,是英国计算机科学家Edgar F. Codd的作品。尽管作为计算机程序员,我们习惯于以好奇心看待新的闪亮的东西,但一项可以在50年内成为计算机一切的核心的技术绝对值得研究。
该模型基于表格的事实使其使用起来非常直观,因为我们已经习惯于使用表格来组织事物。比如说,想想Excel电子表格。
通过基于SQL的数据库,比如PostgreSQL、Oracle、MySQL、SQLite和MS SQL Server等,使用ER模型分析的数据可以使用关系模型建模,并且几乎可以立即转化为SQL数据库格式,这可以说是关系模型在现实世界中的实现,但我们会在其他文章中讨论。
在这篇文章中,我想谈谈关系模型所基于的理论和概念,不是用数学术语表达,而是在实践中的意义。
如果你是一个学生,你可能会发现我在这里写的东西和你的课本上写的不一样,但也许你可以更容易地阅读它来掌握学习材料中表达的更正式的概念。
表
在一个关系模型中,表是一个项目的集合。
它被组织成行和列。
| 姓名 | 年龄 |
|---|---|
| 弗拉维奥 | 36 |
| 罗杰 | 7 |
| 薛德 | 6 |
元组
表中的每个条目都被称为元组。你也可以使用记录 或行这些术语。
一个元组代表表的一行,像这样。
| 弗拉维奥 | 36 |
属性(Attributes
一个属性是元组中的一个单项。
在这个例子中。
| 弗拉维奥 | 36 |
"Flavio "是一个属性。36是另一个属性。
元组是唯一的
表中的每个元组都是唯一的。
在关系模型中,我们不能有重复的数据,这意味着表中的每一行必须至少有一个属性是不同的。
关系键
确保元组是唯一的东西是关系键。
键是必须唯一地识别一个元组的一个属性。
如果关系键是一组属性,它必须是不冗余的。这意味着,如果我们去掉键的一个属性,键就不能保证它的唯一性。
如果可以确定一个以上的键,这些键中的一个将被确定为主键。
键的完整性约束
表中任何元组的关键属性决不能为空,也决不能重复。
给定一个键,我们必须能够毫不含糊地指向一个特定的元组/行。
领域约束
每个属性都有关于它可以持有什么值的规则。
例如,如果我们决定存储数字,我们就不能存储字符串。而且我们可能决定不存储超过10个字符的名字的字符串。
我们也可以称这种类型。
参考性完整性约束
如果一个表包含对二级表的引用,或同一表中的其他图元,那么我们必须遵守规则,防止引用被破坏。
特别是,我们必须通过以下方式避免破坏引用。
- 避免删除或编辑我们所指向的其他表中的记录的主键。
- 避免在另一个表中插入一个不存在键的新记录。
- 避免改变我们所指向的记录的键,而不确保新的键在另一张表中存在。
DBMS(数据库管理系统)将实施一些措施来帮助我们实现参考完整性。