📜  DBMS 中的域约束

📅  最后修改于: 2022-05-13 01:57:01.835000             🧑  作者: Mango

DBMS 中的域约束

在 DBMS 中,约束是一组规则,可确保授权用户修改数据库时不会干扰数据一致性,并且约束在 DDL 命令(如“alter”和“create”命令)中指定。 DBMS 中有几种类型的约束可用,它们是:

  • 域约束
  • 实体完整性约束
  • 参照完整性约束
  • 关键约束

在本文中,我们将只讨论域约束。

域约束

域约束是用户定义的列,可帮助用户根据数据类型输入值。如果遇到错误输入,它会向用户显示该列未正确填写的消息。或者换句话说,它是一个属性,它指定属性可以包含的所有可能值,如整数、字符、日期、时间、字符串。它定义了属性的域或值集,并确保属性所取的值必须是其域的原子值(不能被分割)。

Domain Constraint = data type(integer / character/date / time / string / etc.) + 
                    Constraints(NOT NULL / UNIQUE / PRIMARY KEY / 
                                FOREIGN KEY / CHECK / DEFAULT)

域约束类型:

域约束下有两种类型的约束,它们是:

1. 域约束——非空值:空值是未分配的值,或者我们也可以说是未知的或缺失的属性值,默认情况下,一列可以保存空值。现在我们知道 Not Null 约束限制列不接受空值,这意味着它只限制字段始终包含一个值,这意味着您不能插入新记录或更新记录而不向字段中添加值。

示例:在“员工”数据库中,每个员工都必须有一个与之关联的姓名。

Create table employee
(employee_id varchar(30),
employee_name varchar(30) not null,
salary NUMBER);

2.域约束——检查:它定义了每行必须满足的条件,这意味着它限制了范围之间的列的值,或者我们可以说它就像在将数据保存到列中之前的条件或过滤器检查。它确保当在关系中插入元组时,必须满足检查子句中给出的谓词。

示例:我们需要检查employee表输入的id号是否大于0。

Create table employee
(employee_id varchar(30) not null check(employee_id > 0),
employee_name varchar(30),
salary NUMBER);

上面的示例在employee_id 列上创建了CHECK 约束,并指定列employee_id 只能包含大于0 的整数。

注意:在 DBMS 中,表是行和列的组合,其中我们有一些与之关联的唯一属性名称。基本上,域是表中存在的一组唯一值。举个例子,假设我们有一个表 student,它由 NAME、ROLL NO 和 MARKS 3 个属性组成。现在 ROLL NO 属性只能有与之关联的数字,并且它们不会包含任何字母。所以我们可以说它只包含整数域,它只能是大于0的正数。

示例 1:

创建一个表“student”,其中“ROLL”字段的值大于 0。

领域:

桌子:

上面的例子只接受卷号。大于 0。

示例 2:

创建一个表“Employee”,其中“AGE”字段的值大于 18。

领域:

桌子:

上面的例子只接受年龄大于 18 岁的 Employee。