zoukankan      html  css  js  c++  java
  • Database: Normal form

    refer to wikipedia---

    1NF(first normal form):

    1. There's no top-to-bottom ordering to the rows.

    2. There's no left-to-right ordering to the columns.

    3. There are no duplicate rows.

    4. Every row-and-column intersection contains exactly one value from the applicable domain (and nothing else).

    5. All columns are regular [i.e. rows have no hidden components such as row IDs, object IDs, or hidden timestamps].

    2NF(second normal form):

    if and only if it is in 1NF and every non-prime attribute of the table is dependent on the whole of a candidate key.

    A non-prime attribute of a table is an attribute that is not a part of any candidate key of the table.

    Not all 2NF tables are free from update anomalies.

    A table for which there are no partial functional dependencies on the primary key is typically, but not always, in 2NF.

    3NF(third normal form):

    The relation R (table) is in 2NF

    Every non-prime attribute of R is non-transitively dependent (i.e. directly dependent) on every superkey of R.

    transitive dependency is a functional dependency in which X → Z (X determines Z) indirectly, by virtue of X → Y and Y → Z (where it is not the case that Y → X).

    Requiring existence of "the key" ensures that the table is in 1NF; requiring that non-key attributes be dependent on "the whole key" ensures 2NF; further requiring that non-key attributes be dependent on "nothing but the key" ensures 3NF.

    BCNF(3.5 normal form):

    If a relational schema is in BCNF then all redundancy based on functional dependency has been removed, although other types of redundancy may still exist. A relational schema R is in Boyce–Codd normal form if and only if for every one of its dependencies X → Y, at least one of the following conditions hold:[4]

    • X → Y is a trivial functional dependency (Y ⊆ X)
    • X is a superkey for schema R

    A 3NF table which does not have multiple overlapping candidate keys is guaranteed to be in BCNF. Depending on what its functional dependencies are, a 3NF table with two or more overlapping candidate keys may or may not be in BCNF

    3NF:只消除非主属性对主属性的传递依赖;

    BCNF:消除所有属性对主属性的传递依赖。

    4NF(forth normal form):

    Table is in 4NF if and only if, for every one of its non-trivial multivalued dependencies X 	woheadrightarrow YX is a superkey—that is, X is either a candidate key or a superset thereof.

    trivial multivalued dependency X 	woheadrightarrow Y is one where either Y is a subset of X, or X and Y together form the whole set of attributes of the relation.

  • 相关阅读:
    SQL注入详解
    Nginx跨域及Https配置
    GET请求和POST请求的request和response的中文乱码问题
    创建Maven工程
    Maven环境变量配置
    Cookie&Session会话技术
    Maven库站
    20191002思维导图工具MindManager 000 033
    20190930-02 Redis持久化方式一:RDB及修改RDB的默认持久化策略 000 032
    Tomcat配置HTTPS方式生成安全证书
  • 原文地址:https://www.cnblogs.com/yingzhongwen/p/3366306.html
Copyright © 2011-2022 走看看