提交 45ea93b4 编写于 作者: W wizardforcel

2019-08-29 09:49:44

上级 b431ea26
......@@ -5,6 +5,7 @@
**定义**:外键是表的列,指向另一个表的[主键](https://beginnersbook.com/2015/04/primary-key-in-dbms/)。它们充当表之间的交叉引用。
**例如**
在下面的例子中,`Course_enrollment`表中的`Stu_Id`列是外键,因为它指向`Student`表的主键。
`Course_enrollment`表:
......@@ -18,7 +19,7 @@
| C06 | 103 |
| C07 | 102 |
学生表:
`Student`表:
| `Stu_Id` | `Stu_Name` | `Stu_Age` |
| --- | --- | --- |
......
......@@ -10,7 +10,7 @@
* 独特
* 默认
* 校验
* 键约束 - 主键,外键
* 键约束 - 主键,外键
* 域约束
* 映射约束
......@@ -30,7 +30,7 @@ PRIMARY KEY (ROLL_NO)
);
```
在这里阅读更多关于[这个约束的信息](https://beginnersbook.com/2014/05/not-null-constraint-in-sql/ "NOT NULL Constraint in SQL")
在这里阅读更多关于[这个约束的信息](https://beginnersbook.com/2014/05/not-null-constraint-in-sql/)
#### 唯一:
......@@ -46,7 +46,7 @@ PRIMARY KEY (ROLL_NO)
);
```
[在这里阅读更多相关信息](https://beginnersbook.com/2014/05/unique-constraint-in-sql/ "UNIQUE Constraint in SQL")
[在这里阅读更多相关信息](https://beginnersbook.com/2014/05/unique-constraint-in-sql/)
#### 默认:
......@@ -63,7 +63,7 @@ PRIMARY KEY (ROLL_NO)
);
```
阅读更多:[默认约束](https://beginnersbook.com/2014/05/default-constraint-in-sql/ "DEFAULT Constraint in SQL")
阅读更多:[默认约束](https://beginnersbook.com/2014/05/default-constraint-in-sql/)
#### 校验:
......@@ -86,7 +86,7 @@ PRIMARY KEY (ROLL_NO)
#### 主键:
[主键](https://beginnersbook.com/2015/04/primary-key-in-dbms/ "Primary key in DBMS")唯一标识表中的每条记录。它必须具有唯一值,并且不能包含空值。在下面的示例中,`ROLL_NO `字段被标记为主键,这意味着`ROLL_NO`字段不能具有重复值和空值。
[主键](https://beginnersbook.com/2015/04/primary-key-in-dbms/)唯一标识表中的每条记录。它必须具有唯一值,并且不能包含空值。在下面的示例中,`ROLL_NO `字段被标记为主键,这意味着`ROLL_NO`字段不能具有重复值和空值。
```
CREATE TABLE STUDENT(
......@@ -101,15 +101,16 @@ PRIMARY KEY (ROLL_NO)
#### 外键:
外键是表的列,指向另一个表的主键。它们充当表之间的交叉引用。
[在这里了解更多相关信息。](https://beginnersbook.com/2015/04/foreign-key-in-dbms/ "Foreign key in DBMS")
[在这里了解更多相关信息。](https://beginnersbook.com/2015/04/foreign-key-in-dbms/)
#### 域限制:
每个表都有一组特定的列,每列允许基于其数据类型的相同类型的数据。该列不接受任何其他数据类型的值。
[域约束](https://beginnersbook.com/2015/04/domain-constraints-in-dbms/ "Domain constraints in DBMS")**用户定义的数据类型**,我们可以像这样定义它们:
每个表都有一组特定的列,每列基于其数据类型允许相同类型的数据。该列不接受任何其他数据类型的值。
[域约束](https://beginnersbook.com/2015/04/domain-constraints-in-dbms/)**用户定义的数据类型**,我们可以像这样定义它们:
域约束=数据类型+约束(`NOT NULL` / `UNIQUE` / `PRIMARY KEY` / `FOREIGN KEY` / `CHECK` / `DEFAULT`
#### 映射约束:
[在这里阅读有关映射约束的内容。](https://beginnersbook.com/2015/04/mapping-constraints-in-dbms/)
\ No newline at end of file
[在这里阅读有关映射约束的内容](https://beginnersbook.com/2015/04/mapping-constraints-in-dbms/)
\ No newline at end of file
......@@ -2,12 +2,14 @@
> 原文: [https://beginnersbook.com/2015/04/domain-constraints-in-dbms/](https://beginnersbook.com/2015/04/domain-constraints-in-dbms/)
表是 DBMS 是一组包含数据的行和列。表中的列具有唯一的名称,通常在 DBMS 中称为**属性。域是表中属性允许的唯一值集。例如,一个月的域可以接受 1 月,2 月...... 12 月作为可能的值,整数域可以接受负数,正数和零的整数。**
表是 DBMS 是一组包含数据的行和列。表中的列具有唯一的名称,通常在 DBMS 中称为**属性**。域是表中属性允许的唯一值集。例如,一个月的域可以接受 1 月,2 月...... 12 月作为可能的值,整数域可以接受负数,正数和零的整数。
**定义**:域约束是**用户定义的数据类型**,我们可以这样定义它们:
域约束=数据类型+约束(`NOT NULL` / `UNIQUE` / `PRIMARY KEY` / `FOREIGN KEY` / `CHECK` / `DEFAULT`
**示例**
例如,我想创建一个表`student_info`,其中`stu_id`字段的值大于 100,我可以创建一个域和表,如下所示:
```
......@@ -23,6 +25,7 @@ stu_age int
```
**另一个例子**
我想创建一个表`bank_account`,其中`account_type`字段的值为`checks``save`
```
......
......@@ -2,16 +2,17 @@
> 原文: [https://beginnersbook.com/2015/04/mapping-constraints-in-dbms/](https://beginnersbook.com/2015/04/mapping-constraints-in-dbms/)
映射约束可以用[映射基数](https://beginnersbook.com/2015/04/cardinality-in-dbms/ "Cardinality in DBMS")来解释:
映射约束可以用[映射基数](https://beginnersbook.com/2015/04/cardinality-in-dbms/)来解释:
**映射基数**
**一对一**:实体集 A 的实体可以与实体集 B 中的至多一个实体和实体集 B 中的实体相关联。可以与实体集 A 中的至多一个实体相关联。
**一对多**:实体集 A 的实体可以与实体集 B 的任意数量的实体相关联,并且实体集 B 中的实体可以与实体集中的至多一个实体相关联。一个
**一对一**:实体集 A 的一个实体可以与实体集 B 中的至多一个实体相关联,实体集 B 中的一个实体可以与实体集 A 中的至多一个实体相关联
**多对一**:实体集 A 的实体可以与实体集 B 中的至多一个实体相关联,并且实体集 B 中的实体可以与任意数量的实体集实体相关联。一个
**一对多**:实体集 A 的一个实体可以与实体集 B 的任意数量的实体相关联,并且实体集 B 中的一个实体可以与实体集中 A 的至多一个实体相关联
**多对多**:实体集 A 的实体可以与实体集 B 的任意数量的实体相关联,并且实体集 B 中的实体可以与实体集的任意数量的实体相关联。一个。
**多对一**:实体集 A 的一个实体可以与实体集 B 中的至多一个实体相关联,并且实体集 B 中的一个实体可以与实体集 A 的任意数量的实体相关联。
**多对多**:实体集 A 的一个实体可以与实体集 B 的任意数量的实体相关联,并且实体集 B 中的一个实体可以与实体集 A 的任意数量的实体相关联。
在数据库中创建表时,我们可以使用这些约束。
......@@ -33,4 +34,4 @@ constraint fk_Customers foreign key (customer_id)
);
```
假设客户订单不止一次,上述关系代表**一对多**关系。同样,我们可以根据需求实现其他映射约束。
\ No newline at end of file
假设客户下订单不止一次,上述关系代表**一对多**关系。同样,我们可以根据需求实现其他映射约束。
\ No newline at end of file
......@@ -5,15 +5,17 @@
在 DBMS 中,您可以在两个不同的地方听到基数术语,它也有两种不同的含义。
**在数据模型的背景下**
[数据模型](https://beginnersbook.com/2015/04/data-models-in-dbms/)而言,基数是指两个表之间的关系。如[实体关系指南](https://beginnersbook.com/2015/04/e-r-model-in-dbms/)中所见,关系可以是四种类型:
一对一 - 第一个表的第一行与第二个表的单行相关联。例如,人与护照表之间的关系是一对一的,因为一个人只能拥有一本护照,而护照只能分配给一个人。
一对一 - 第一个表的行与第二个表的单行相关联。例如,人与护照表之间的关系是一对一的,因为一个人只能拥有一本护照,而护照只能分配给一个人。
一对多 - 第一个表的第一行与第二个表的多行相关联。例如,客户和订单表之间的关系是一对多,因为客户可以下多个订单,但单个客户可以单独下订单
一对多 - 第一个表的单行与第二个表的多行相关联。例如,客户和订单表之间的关系是一对多,因为客户可以下多个订单,但单个订单只能属于一个客户
多对一 - 第一个表的许多行与第二个表的单个行相关联。例如,学生和大学之间的关系是多对一的,因为大学可以有很多学生,但学生一次只能在一所大学学习。
多对一 - 第一个表的多行与第二个表的单行相关联。例如,学生和大学表之间的关系是多对一的,因为大学可以有很多学生,但学生一次只能在一所大学学习。
多对多 - 第一个表的多行与第二个表的多行相关联。例如,学生和课程表之间的关系是多对多的,因为学生可以一次学习很多课程,并且可以将课程分配给许多学生。
多对多 - 第一个表的多行与第二个表的多行相关联。例如,学生和课程表之间的关系是多对多的,因为学生可以一次学习很多课程,并且可以将课程分配给许多学生。
**在查询优化的上下文**中:
在查询方面,基数是指表中列的唯一性。具有所有唯一值的列将具有高基数,并且具有所有重复值的列将具有低基数。这些基数得分有助于查询优化。
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册