• 理解ORM的前提:数据库中的范式和约束


    理解ORM的前提:数据库中的范式和约束

    一.数据库中的范式:

      范式, 英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪70年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法,以下就是对这三个范式的基本介绍:

    第一范式(1NF):

      数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性。

      例如: userInfo: '山东省烟台市 1318162008' 依照第一范式必须拆分成
                       userInfo: '山东省烟台市'   userTel: '1318162008'两个字段

    第二范式(2NF):

      满足1NF后要求表中的所有列,都必需依赖于主键,而不能有 任何一列与主键没有关系(一个表只描述一件事情)。

      例如:订单表只能描述订单相关的信息,所以所有的字段都必须与订单ID相关。
                      产品表只能描述产品相关的信息,所以所有的字段都必须与产品ID相关。
            因此在同一张表中不能同时出现订单信息与产品信息。

    第三范式(3NF):第三范式(3NF):满足2NF后,要求:表中的每一列都要与主键直接相关,而不是间接相关(表中的每一列只能依赖于主键)

      例如:订单表中需要有客户相关信息,在分离出客户表之后,订单表中只需要有一个用户
           ID即可,而不能有其他的客户信息,因为其他的用户信息是直接关联于用户ID,而不是关联
           于订单ID。

    注意事项:

    1.第二范式与第三范式的本质区别:在于有没有分出两张表。

    第二范式是说一张表中包含了多种不同实体的属性,那么必须要分成多张表,第三范式是要求已经分好了多张表的话,一张表中只能有另一张标的ID,而不能有其他任何信息,(其他任何信息,一律用主键在另一张表中查询)。

    2.必须先满足第一范式才能满足第二范式,必须同时满足第一第二范式才能满足第三范式。

    二:数据库中约束

    约束用于限制加入表的数据的类型。

    可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句)。

    我们将主要探讨以下几种约束:

    • NOT NULL
    • UNIQUE
    • PRIMARY KEY
    • FOREIGN KEY
    • CHECK
    • DEFAULT

    1、SQL NOT NULL 约束

    NOT NULL 约束强制列不接受 NULL 值。

    NOT NULL 约束强制字段始终包含值。这意味着,如果不向字段添加值,就无法插入新记录或者更新记录。

    下面的 SQL 语句强制 "Id_P" 列和 "LastName" 列不接受 NULL 值:

    CREATE TABLE Persons
    (
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    )

    2、SQL UNIQUE 约束

    UNIQUE 约束唯一标识数据库表中的每条记录。

    UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。

    PRIMARY KEY 拥有自动定义的 UNIQUE 约束。

    请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束。

    CREATE TABLE Persons
    (
    Id_P int NOT NULL UNIQUE,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    )

    如果需要命名 UNIQUE 约束,以及为多个列定义 UNIQUE 约束,请使用下面的 SQL 语法:

    CREATE TABLE Persons
    (
    Id_P int NOT NULL,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255),
    CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)
    )

    SQL UNIQUE Constraint on ALTER TABLE

    当表已被创建时,如需在 "Id_P" 列创建 UNIQUE 约束,请使用下列 SQL:

    ALTER TABLE Persons
    ADD UNIQUE (Id_P)

    如需命名 UNIQUE 约束,并定义多个列的 UNIQUE 约束,请使用下面的 SQL 语法:

    ALTER TABLE Persons
    ADD CONSTRAINT uc_PersonID UNIQUE (Id_P,LastName)

    撤销 UNIQUE 约束

    如需撤销 UNIQUE 约束,请使用下面的 SQL:

    ALTER TABLE Persons
    DROP CONSTRAINT uc_PersonID

    3、SQL PRIMARY KEY 约束

    PRIMARY KEY 约束唯一标识数据库表中的每条记录。

    主键必须包含唯一的值。

    主键列不能包含 NULL 值。

    每个表都应该有一个主键,并且每个表只能有一个主键。

    SQL PRIMARY KEY Constraint on CREATE TABLE

    下面的 SQL 在 "Persons" 表创建时在 "Id_P" 列创建 PRIMARY KEY 约束:

    CREATE TABLE Persons
    (
    Id_P int NOT NULL PRIMARY KEY,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Address varchar(255),
    City varchar(255)
    )

    4、SQL FOREIGN KEY 约束

    一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。

    5、SQL CHECK 约束

    CHECK 约束用于限制列中的值的范围。

    如果对单个列定义 CHECK 约束,那么该列只允许特定的值。

    如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

    6、SQL DEFAULT 约束

    DEFAULT 约束用于向列中插入默认值。

    如果没有规定其他的值,那么会将默认值添加到所有的新记录。

    由于内容篇幅限制,没有放上示例,请访问:

    http://www.w3school.com.cn/sql/sql_constraints.asp

    打开上面的URL可以查看更详细的例子。

  • 相关阅读:
    ROW_NUMBER()用法(转)
    winform MD5值生成
    VC使用“添加方法向导”添加调度映射方法“
    MyGeneration配置说明
    dataGridView取消自动生成列
    PHP魔术常量(magic constant)
    Eclipse添加DTD文件实现xml的自动提示功能
    Google:5个常见的SEO错误和6个SEO好主意
    PHP检查PEAR是否工作
    手把手教你在ubuntu上安装LAMP
  • 原文地址:https://www.cnblogs.com/pangjianxin/p/8692799.html
Copyright © 2020-2023  润新知