存储动态数据时,数据库的设计方法

王朝学院·作者佚名  2016-05-26
窄屏简体版  字體: 小  |  中  |  大  |  超大  

存储动态数据时,数据库的设计方法案例:现需要对一些设备的信息进行存储,设备的类型包括“除湿机”、“空调”、“风机”,其中“除湿机”的数据包括“温度”、“湿度”、“除湿状态”;空调的数据包括“温度”、“状态”;“风机”的数据包括“电流”、“电压”、“状态”。在设计的时候要考虑到设备类型可能会增加,每种类型的设备的数据种类也可能会改变。设计方案一: 将列数据转换为行数据存储类型表:存储设备类型TypeId

Name

1

除湿机

2

空调

3

风机

属性表:关联类型表,存储每种类型的属性PRopertyId

TypeId

Name

1

1

温度

2

1

湿度

3

1

除湿状态

4

2

温度

5

2

状态

6

3

电流

7

3

电压

8

3

状态

设备表:关联类型表,存储设备信息DeviceId

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

数据表:关联设备表,存储设备数据,但不包含具体的数据DataId

DeviceId

CTime

1

1

xxx

2

2

xxx

详细表:关联数据表和属性表,存储设备具体的数据DetailId

DataId

PropertyId

特点:标准的关系型数据库,设计好后基本不需要修改表的结构;在获取设备数据信息的时候,需要关联查询,当数据量较大时,会导致查询性能问题设计方案二:每种类型的设备新建一张表来存储类型表:存储设备类型和对应的表名TypeId

Name

TableName

1

除湿机

ChuShiJi

2

空调

KongTiao

3

风机

FengJi

属性表:关联类型表,存储设备属性和列名PropertyId

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

设备表:关联类型表,存储设备信息DeviceId

TypeId

Name

除湿机表:ChuShiJiId

CTime

WenDu

ShiDu

ZhuangTai

空调表:KongTiaoId

CTime

WenDu

ZhuangTai

风机表:Id

CTime

DianLiu

DianYa

ZhuangTai

特点:分表后,单表数据量会减少,单类型查询会很快;属性修改后需要修改相应的表结构,而且在查询前要先根据类型表和属性表定位查询位置设计方案三:使用分隔符把设备数据拼接后,存储到一列中类型表:存储设备类型TypeId

Name

属性表:关联类型表,存储每种类型的属性PropertyId

TypeId

Name

设备表:关联类型表,存储设备信息DeviceId

TypeId

Name

数据表:关联设备表,存储设备数据,其中一列存储所有的具体数据DataId

DeviceId

Data

温度※湿度※状态

特点:查询方便,但需要对具体的数据进行相关的操作,比如统计分析时会很麻烦设计方案四:单表多列存储类型表:存储设备类型TypeId

Name

1

除湿机

2

空调

3

风机

属性表:关联类型表,存储每种类型的属性和列名Id

TypeId

Name

ColumnName

1

1

温度

c1

2

1

湿度

c2

3

1

状态

c3

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航