宜收藏:5款常用的数据分析工具,简单便捷!数据分析工具常见的有哪些?
708
2022-05-30
目录
文章目录
目录
前言
约束
非空约束
唯一约束
主键约束
外键约束
Check 约束
默认约束
索引约束
参考文档
前言
我们不应该只把数据库系统看作是保存数据的黑盒子,而要将其看成验证和防止数据腐化的工具。
约束
非空约束
如果业务规则要求该属性应该始终存在,那么要毫不犹豫地将其设置为 Not Null。
适合设置为 Not Null 的字段有 Id、Name、AddedDate、IsActive、State、CategoryId(如果所有项都应该有一个类别)、ItemCount、Price 以及许多其他字段。通常,这些属性在业务逻辑中扮演重要角色。
但是要注意,不要对可以为空的属性使用 Not Null 约束。
唯一约束
根据业务规则,一些属性(或属性的组合)应该是惟一的,比如 Id、PinNumber、BookId 和 AuthorId、OrderNo 等。应该通过添加惟一约束来保证这些属性的惟一。
注意:也可以使用唯一索引来实现同样的效果,但是添加约束是更好的方法。因为当添加惟一约束时,会自动创建非惟一索引。因此,如果出于某种原因,你必须临时禁用/启用约束,将会非常容易。在使用唯一索引的情况下,你必须删除/重新创建索引,从性能和时间方面来说,这是一个昂贵的操作。
主键约束
Not Null 和唯一约束一起构成主键。
当我们想到主键时,会很快想到 Id 或 ObjectId 之类的列。但是主键也可以是复合的,比如 BookId 和 AuthorId。这里有个难题是,是使用单独的 Id 列作为主键,还是将两者的组合作为主键?
通常,使用单独的 Id 列是一种更好的方法,因为它可以使连接更加清晰,还能方便地将另一列添加到惟一组合中。但是,即使有了一个单独的主键(Id),我们还是要为 BookId 和 AuthorId 列添加唯一约束。
外键约束
外键与主键一起确保表之间的数据一致性。
使用外键约束时要注意区分 On Delete 和 On Update 规则,根据数据库的不同,两者均有 NoAction、Restrict、SetNull、SetDefault 和 Cascade 选项。在大多数情况下,Restrict 与 NoAction 是相同的,但是对于某些数据库,它们有细微的区别。
通常,对于键引用查找或不引用实体的实体,我们选择 NoAction。
另一方面,当子记录不能在没有父记录的情况下存在时,选择 Cascade。
SetNull 很少使用。例如,Employee.ManagerId 和 Employee.Id 之间的外键可以是 SetNull。当一名经理被撤职,他的下属就没经理了。显然,只有当列可为空时才能选择该项规则。
SetDefault 最罕见。当父记录被删除时,它将列设置为其默认值。因为外键引用主键,我们很难想象一个有外键的字段将默认值硬编码。
Check 约束
Check 约束允许我们定义数据的有效值/范围。适合 Check 约束的属性有百分比(0 到 100 之间)、状态(0、1、2)、价格、金额、总数(大于或等于 0)、PinNumber(固定长度)等。
默认约束
默认约束允许我们向现有表中添加新的 Not Null 列,并使 “旧” API 与新结构兼容,直到所有各方都完成升级(尽管在完全升级后,默认约束应该删除)。
索引约束
索引是良好数据库设计的重要组成部分,但它们几乎不能保护我们的数据(惟一索引除外)。
需要注意的一点是:一些 RDBMS 系统(例如 Oracle)会在创建外键时自动创建索引,而无需我们操心。其他数据库(例如 MS SQL Server)不会这样做,我们必须自己添加索引。
参考文档
https://mp.weixin.qq.com/s/tdi23o_9GWkCdVaYYq1Grw
数据库
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。