zoukankan      html  css  js  c++  java
  • 存储动态数据时,数据库的设计方法

    案例:现需要对一些设备的信息进行存储,设备的类型包括“除湿机”、“空调”、“风机”,其中“除湿机”的数据包括“温度”、“湿度”、“除湿状态”;空调的数据包括“温度”、“状态”;“风机”的数据包括“电流”、“电压”、“状态”。在设计的时候要考虑到设备类型可能会增加,每种类型的设备的数据种类也可能会改变。
     
    设计方案一: 将列数据转换为行数据存储
     
    类型表:存储设备类型
    Type
    Id Name
    1 除湿机
    2 空调
    3 风机
     
    属性表:关联类型表,存储每种类型的属性
    Property
    Id TypeId Name
    1 1 温度
    2 1 湿度
    3 1 除湿状态
    4 2 温度
    5 2 状态
    6 3 电流
    7 3 电压
    8 3 状态
     
    设备表:关联类型表,存储设备信息
    Device
    Id TypeId Name
    1 1 除湿机1
    2 1 除湿机2
    3 1 除湿机3
    4 2 空调1
    5 2 空调2
    6 2 空调3
    7 3 风机1
    8 3 风机2
    9 3 风机3
     
    数据表:关联设备表,存储设备数据,但不包含具体的数据
    Data
    Id DeviceId CTime
    1 1 xxx
    2 2 xxx
     
    详细表:关联数据表和属性表,存储设备具体的数据
    Detail
    Id DataId PropertyId
         
     
    特点:标准的关系型数据库,设计好后基本不需要修改表的结构;在获取设备数据信息的时候,需要关联查询,当数据量较大时,会导致查询性能问题
     
    设计方案二:每种类型的设备新建一张表来存储
     
    类型表:存储设备类型和对应的表名
    Type
    Id Name TableName
    1 除湿机 ChuShiJi
    2 空调 KongTiao
    3 风机 FengJi
     
    属性表:关联类型表,存储设备属性和列名
    Property
    Id TypeId Name ColumnName
    1 1 温度 WenDu
    2 1 湿度 ShiDu
    3 1 状态 ZhuangTai
    4 2 温度 WenDu
    5 2 状态 ZhuangTai
    6 3 电流 DianLiu
    7 3 电压 DianYa
    8 3 状态 ZhuangTai
     
    设备表:关联类型表,存储设备信息
    Device
    Id TypeId Name
         
     
    除湿机表:
    ChuShiJi
    Id CTime WenDu ShiDu ZhuangTai
             
     
    空调表:
    KongTiao
    Id CTime WenDu ZhuangTai
           
     
    风机表:
    Id CTime DianLiu DianYa ZhuangTai
             
     
    特点:分表后,单表数据量会减少,单类型查询会很快;属性修改后需要修改相应的表结构,而且在查询前要先根据类型表和属性表定位查询位置
     
    设计方案三:使用分隔符把设备数据拼接后,存储到一列中
     
    类型表:存储设备类型
    Type
    Id Name
       
     
    属性表:关联类型表,存储每种类型的属性
    Property
    Id TypeId Name
         
     
    设备表:关联类型表,存储设备信息
    Device
    Id TypeId Name
         
     
    数据表:关联设备表,存储设备数据,其中一列存储所有的具体数据
    Data
    Id DeviceId Data
        温度※湿度※状态
     
    特点:查询方便,但需要对具体的数据进行相关的操作,比如统计分析时会很麻烦
     
    设计方案四:单表多列存储
     
    类型表:存储设备类型
    Type
    Id Name
    1 除湿机
    2 空调
    3 风机
     
    属性表:关联类型表,存储每种类型的属性和列名
    Id TypeId Name ColumnName
    1 1 温度 c1
    2 1 湿度 c2
    3 1 状态 c3
    4 2 温度 c1
    5 2 状态 c3
    6 3 电流 c1
    7 3 电压 c2
    8 3 状态 c3
     
    设备表:关联类型表,存储设备信息
    Id TypeId Name
         
     
    数据表:关联设备表,存储设备数据,具体数据存储到多列中
    Id CTime DeviceId c1 c2 c3 c4 c5……
                   
     
    特点:根据属性表中存储的列名,直接关联到数据表中具体的列,所以具体的数据可以存储到“数据表”符合数据类型的任意一列中
  • 相关阅读:
    2020.9.21
    企业应用架构模式003——对象-关系结构模式
    企业应用架构模式002
    企业应用架构模式001
    代码大全003/
    代码大全002/
    每日总结
    数论必刷题
    Tarjan求割点(割顶) 割边(桥)
    Luogu 2018 秋令营 Test 2
  • 原文地址:https://www.cnblogs.com/sydeveloper/p/4223221.html
Copyright © 2011-2022 走看看