这次我们谈到约束,话说君记否:数据库模型有三要素(2.2中讲过),数据结构,数据操纵和完整性约束,我们不知不觉地讲完了数据结构(3.1),这一章我们来谈完整性约束,至于操作部分我想放到后面来说。
放上清单目录
🐵约束
🐶空值约束
空值(NULL):表示一个未知或不适合此行的属性值
- 处理不完整和异常的数据
- 表示此处无值
- 空值与零,空格不同,零和空格是一个值
🐶实体完整性约束
在基关系中(下面会讲),主键的任何属性都不能为空
- 如果主键为空,代表了有部分属性在行中不需要被区分(问什么的童鞋请看3.1)
- 此规则只适用于主键
- 此规则只限于基关系
🐶参照完整性约束
如果存在外键,则它的值必须与其匹配的候选键值相同,否则外键的值必须为空
- 外键的值要针对其家关系中的主键的值
- 否则,外键值必须为空
🐶自定义完整性约束
由数据库的user或者DBA(前面有讲)添加的规则
☕视图
视图是一个虚拟的关系,不存在的,是动态的,可随着基关系的变化而变化
请注意这句话
![](https://img.haomeiwen.com/i5741745/a55c7ef74e3ad477.png)
注意:还记得在三层结构两级印象中,我一再强调的视图不,那里的视图是指外模式,他是数据库为user呈现的特别结构,与本章节的视图可不一样,本章中讨论的是关系模型的视图
![](https://img.haomeiwen.com/i5741745/70ec133dade8d4a2.png)
🍶术语
- 基关系:与概念模式中的实体对应,是这个实体的命名关系,其行存储在数据库中
- 视图:一个或多个基关系的操作的动态结果,是一种虚关系,不一定存在于数据库中,但可在请求时生成。视图的内容被定义为对一个或多个基关系的查询。视图是动态的,这意味着对基关系的更改将立即在视图中反映出来
🍶目的
- 提供强大和灵活性的安全机制,可以对某些人隐藏信息:-D
- 允许用户自定义访问数据
- 简化基关系的复杂操作
🍶更新
- 基关系的更改要立马在视图中显示出来
- 当视图更改时,其潜在的基关系静观其变:
- Updates are allowed if query involves a single base relation and contains a candidate key of base relation
- theoretically not updateable
- Updates are not allowed involving multiple base relations
- theoretically updateable
- Updates are not allowed involving aggregation or grouping operations.
- partially updateable
网友评论