什么是dbms中的约束?

时间:2010-09-02 10:52:24

标签: database-design terminology

大家好我想知道,当我们为任何表创建一个forigen键时,为什么我们使用像...这样的约束。

CREATE TABLE Persons
(
    PersonID int identity(1,1) NOT NULL,
    FirstName nvarchar(20),
    LastName nvarchar(20) NOT NULL,
    CONSTRAINT PrimKeyPeople PRIMARY KEY(PersonID)
);

这里所有准备好的PersonID都是主键,那么为什么需要给另一个名字primkeypeople。 为什么我们在这里使用约束名称PrimKeyPeople这里是什么PrimKeyPeople?

2 个答案:

答案 0 :(得分:2)

DBMS中定义的每个约束都有一个名称。在您的示例中,PrimKeyPeople是将PersonID定义为主键的约束的名称。

约束名称(与表名,视图名称和数据库中现有的每个其他实体的名称一起)存储在SQL / Schemata(或信息和定义模式)中。 SQL / Schemata使SQL数据库和对象自我描述。例如,SQL / Schemata允许编写删除主键约束的SQL更新。如何删除约束?当然,通过引用它的名字!

请注意,如果您没有为约束指定名称,DBMS将自动生成一个。

答案 1 :(得分:1)

约束可以描述为您必须遵循的规则。

DBMS中已知的几个约束是主键,外键和唯一。主键和唯一确保其中的所有值都是唯一的。因此,永远不会接受任何非独特的价值。

其他约束(如外键)可确保其值引用另一个表中的另一个值。因此,永远不会接受任何不引用其他值的外键值。

在您的情况下,PrimKeyPeople是表人员的主键。此主键(唯一约束)将断言其中的每个值都是唯一的。命名约束是必须的(对于DBMS),但对于用户是可选的。这个'命名'是必需的,因为有时我们需要禁用/启用/删除一些约束。为了使用户友好,一些DBMS为每个约束提供默认名称,以便用户不必明确声明它。