zoukankan      html  css  js  c++  java
  • “三大范式”及数据库设计

    # 为什么需要设计数据库?
    --当数据库较为复杂的时候需要设计数据库

    # 设计数据库的步骤
      1.收集信息(专业人士)
      2.标识实体(Entity)--找名词/表名
      3.为实体标识属性
      4.标识实体之间的关系(Relationship)
      5.画图
      6.编写sql语句建表(根据"三大范式")

    # 映射基数
      "一对一"、"一对多"、"多对一"、"多对多"

    为什么需要数据规范化(注意:三大范式(满足N-1范式) 可以帮助我们 规范数据的的设计。
      好处:防止数据混乱、数据冗余;
      缺点:很难严格排除出所有不满足的表,难拆分,影响一定的性能
      实际使用时,需要"规范性"和"易用性、性能"综合考虑)


    ***第一范式(1st NF)*** --每列不可分割
        确保每列的原子性(不可拆):如果每列都是不可分的最小数据单元(也称为最小的原子单元),
    则满足了"第一范式"

    ***第二范式(2st NF)*** --一个表,一件事(若一张表不满足2NF,就要拆分,然后通过将一个表的主键设置为另一张表的外键,来对两张表进行关联)

        宏观:要求每个表只描述一件事情(例如,一个student表 描述的都是学生字段)
         微观:通过2NF定义:除了主键外地其他字段,都依赖主键(A―>B就是B决定了A)

    ***第三范式(3st NF)*** --列要和主键有直接的关系,不能间接相关
        如果一个关系满足2NF,并且除了主键以外的其他列都传递依赖于主键列,
    满足第三范式(3NF)

    微观:除了主键以外的其他字段,都不传递依赖于主键
    X――>Y――>Z:X决定了Z,Z传递依赖X

    # 数据库设计软件:Power Designer

    name:给用户看的,只能用于显示
    code:代码实际操作

    ***
    事务具有哪些特性?
      原子性、一致性、隔离性、永久性(ACID)

    索引的目的是?
      加快检索

    简述“三范式”含义
      1.1st NF:每列不可分割
      2.2st NF: 一个表,一件事
      3.3st NF:列要和主键有直接关系,不能间接相关

    ***

  • 相关阅读:
    java泛型
    转载:MSIL Instruction Table
    What if your dynamic sql statement is too long?
    自己第一个正儿八经的div+css页面
    bulk insert formatFile格式记录
    日志 20071221(WCF,using keyword)
    C++点滴
    The scripts used to generate a demo "School" database (with data)
    The typical scenarios of using "Insert" in Tsql
    如何生成任意给定区间的随机值序列
  • 原文地址:https://www.cnblogs.com/wzhqzm/p/13369155.html
Copyright © 2011-2022 走看看