• 首页
        • 更多产品

          客户为中心的产品管理工具

          专业的软件研发项目管理工具

          简单易用的团队知识库管理

          可量化的研发效能度量工具

          测试用例维护与计划执行

          以团队为中心的协作沟通

          研发工作流自动化工具

          账号认证与安全管理工具

          Why PingCode
          为什么选择 PingCode ?

          6000+企业信赖之选,为研发团队降本增效

        • 行业解决方案
          先进制造(即将上线)
        • 解决方案1
        • 解决方案2
  • Jira替代方案
目录

关系型数据库中的字段默认值、不可为空、少数索引约束的优缺点是什么

字段默认值:针对每个字段都有自己的默认值,较有利于进行统计和分析,以及方便程序逻辑操作;不可为空:若是该字段创建为索引情况下,且允许为NULL,则存储多个值,若是不允许为空,可能用某一个值替代。

一、关系型数据库中的字段默认值、不可为空、少数索引约束的优缺点

1.字段默认值:针对每个字段都有自己的默认值,较有利于进行统计和分析,以及方便程序逻辑操作;

2.不可为空:若是该字段创建为索引情况下,且允许为NULL,则存储多个值,若是不允许为空,可能用某一个值替代,则索引值更少,以及部分数据库产品不支持字段为NULL情况下创建索引(特别是早期的数据库产品)。

3.少数性约束:那是指有数据少数性要求的情况下,可以借助数据库的方式判断是否存在重复值,而避免程序去判断,减少事务的处理等。

六大约束:

not null 非空 :用于保障该字段的值不能为空, 比如姓名、学号等

Default 默认: 用于保证该字段有默认值,比如性别、

PRIMARY KEY 主键: 用于保证该字段的值有少数性,并且 非空。是能够少数的标识一组数据的数据元素;比如说:学号,姓名,年龄,性别,课程号课程中学号是少数的

UNIQUE 少数约束: 用于保障该字段的值有少数性,可以为空, 比如座位号

Check 检查约束:mysql中不支持,但不报错

Foreign KEY 外键:用于限制两个标的关系 用于保证该字段的值必须来自于主表关联的值。 一组数据的主键是另一组数据的的元素;主键约束了外键所在表中不能存在主键类之外的值;外键用于与另一张表的关联。比如:学生表的专业编号、员工表的部门编号。

延伸阅读:

二、索引维护

B+树为了维护索引有序性,在插入新值的时候需要做必要的维护。以上面这个图为例,如果插入新的行ID值为700,则只需要在R5的记录后面插入一个新记录。如果新插入的ID值为400,就相对麻烦了,需要逻辑上挪动后面的数据,空出位置。

而更糟的情况是,如果R5所在的数据页已经满了,根据B+树的算法,这时候需要申请一个新的数据页,然后挪动部分数据过去。这个过程称为页分裂。在这种情况下,性能自然会受影响。

除了性能外,页分裂操作还影响数据页的利用率。原本放在一个页的数据,现在分到两个页中,整体空间利用率降低大约50%。

当然有分裂就有合并。当相邻两个页由于删除了数据,利用率很低之后,会将数据页做合并。合并的过程,可以认为是分裂过程的逆过程。

相关文章