存儲動態數據時,數據庫的設計方法


案例:現需要對一些設備的信息進行存儲,設備的類型包括“除濕機”、“空調”、“風機”,其中“除濕機”的數據包括“溫度”、“濕度”、“除濕狀態”;空調的數據包括“溫度”、“狀態”;“風機”的數據包括“電流”、“電壓”、“狀態”。在設計的時候要考慮到設備類型可能會增加,每種類型的設備的數據種類也可能會改變。
 
設計方案一: 將列數據轉換為行數據存儲
 
類型表:存儲設備類型
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……
               
 
特點:根據屬性表中存儲的列名,直接關聯到數據表中具體的列,所以具體的數據可以存儲到“數據表”符合數據類型的任意一列中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM