zoukankan      html  css  js  c++  java
  • [转载]数据库数据库设计的5种常见关系 Virus

    本文转载,原作者:superdullwolf
    数据库设计的5种常见关系,其中本文主要讲“多态”关系结构,以手机为例。

    1,配置关系  --和其他表无任何关系的表。
    例如:webConfig里的东西你存储到表里。

    2,一对多关系 ,一张表包含另外一个表的主键作为外键。
    例如:手机.品牌id=2, 这里的2是[品牌名称表]的id字段为2的纪录,品牌名称是"Nokia"。一个手机只能有一个品牌。

    3,多对多,需要3张表,有一个包含两个外键的关系表。
            例如: 手机1即属于"智能" 又属于"滑盖"组的, 一个组包含多个手机,一个手机可以属于多个组。

    4,树型结构,常见的两钟:父ID设计和001002编码设计。
    例如:手机的经销商分为 省/市/县

    5,“多态”结构和多对多略有不同,如果需求中某表字段多少类型有非常大的不确定性,可以采用3个表来完成:

    一个[主表](ID),
    一个[属性名称表](属性ID.属性名称),
    一个[属性值表],包括3个字段:
          属性值(属性Value varchar(500))
          主表ID
          属性ID

    这样可以作到最小冗余度。
    (和常见的多对多关系不同的是:值统一用varchar来存储,因为这类型的值一般不会用来计算)。

    比如:手机型号有几千种,除了共同属性外还有不同属性有几百个,属性名和值类型都不一样,有的手机有这属性,有的没有。
    对于这样的“多态”,我们就采用上面的设计结构。
    其效果相当于:

    某奇怪手机.属性集合["某某奇怪属性名"]="某某奇怪值";
    某变态手机.属性集合["某某变态属性名"]="某某变态值";

    【Blog】http://virusswb.cnblogs.com/

    【MSN】jorden008@hotmail.com

    【说明】转载请标明出处,谢谢

    反馈文章质量,你可以通过快速通道评论:

  • 相关阅读:
    python 注释
    python元祖
    浅谈单片机应用程序架构----本质是定时调用
    原子哥的STM32视频,我发现他们都看不懂原子哥里面按键扫描程序
    指针函数与函数指针的区别
    基于不带字库的图形LCD模块汉字显示解决方案
    GB2312编码
    C语言可变参简介
    kEIL5环境下移置STM32库文件
    nodejs表单验证
  • 原文地址:https://www.cnblogs.com/virusswb/p/1121632.html
Copyright © 2011-2022 走看看