关系模型是简洁的,它的简洁性源自集合论,这既是优点也是缺点。 数学的基础使得关系模型是描述性而不是过程性的,用户需要声明想要从数据库中得到什么而不是怎样找到这些信息,RDBMS知道该怎么去做。 问题变得复杂时,简单的事情也会变得复杂。解决复杂问题并没有简单的方法,只能用复杂的机制,如复杂的基本类型。
通过对比ODB或ORDB的基本类型,RDB不支持:对象类型及其相关概念、结构化类型、集合、引用,表的列只能是原子类型。
关系模型完全消除了用户可见的所有表间的链接,而是通过比较各列的值来维护表间关系,遵循参照完整性约束。
关系表定义为固定列的集合,由行和列组成,行列交叉处的元素的值必须是不可分割和不重复的。 域定义了一个列可以取值的合法集,可以设置业务规则来约束列的取值。 只涉及单个列或域的简单规则可以在规则机制中定义,涉及多个表的复杂规则可以定义为参照完整性约束,定义业务规则的最佳机制是触发器。 关系表中不允许有重复行,这是因为集合不允许有相同元素。
尽管实际的RDBMS可以不设主键,可以容许有重复行,但是这没有意义,因为RDB不像ODB或ORDB那样存在OID来区分对象。
外键的值要么为NULL要么必须与对应的同一个或另一个表中的主键值相匹配。 参照完整性约束主要体现在外键和对应的表的主键之间,二者需要对应起来。
触发器是一个小程序,用扩展的SQL语句编写,当定义了触发器的表发生修改操作时自动触发,修改操作可以是insert、update、delete。 触发器可以用