[英]Key-{Key-Value} pair in Database table - how to model?
在建模 DB 表時遇到問題,其鍵(在鍵值中)是可配置的。
所以基本上我想讀取電池數據,其中有 key=ParamName, KeyValue=param name 的值。 此外,每個電池都有自己的 IP 地址。 ParamName 的示例是“BatteryStatus”、“BatteryTemperature”、“BatteryCurrent”等。
我的 Java 程序將使用 IP 地址讀取電池信息,並獲取所有必需參數名稱的值。 現在我可以輕松地將每個 ParamName 定義為一列的表:IP | 電池狀態 | 電池溫度| 等等
但問題是 ParamNames 是在可配置文件中定義的,我應該能夠添加新的 ParamNames 或刪除現有的 ParamNames,而無需 touchig 代碼或數據庫。 那么我不能使用固定的表結構嗎?
如果我創建如下所示的內容,它將復制 IP
IP | ParamName | ParamValue
102.103.123.1 | BatteryStatus | "normal"
102.103.123.1 | BatteryTemperature| 32
102.103.123.1 | BatteryCurrent | 220
102.103.123.2 | BatteryStatus | "normal"
102.103.123.2 | BatteryTemperature| 35
etc.
如您所見,我正在嘗試在 DB 中存儲一個 Key-{Key-Value} 對。 任何想法如何有效地做到這一點?
假設在IP
和ParamName
上有正確的索引,在您的示例中擁有一個三元組表非常接近。
我要做的第一個優化是用一個INT
列替換ParamName
,或者用另一個表, ParamName
將作為外鍵,或者在您的客戶端代碼中查找哈希表。
您可以對IP
(鏈接表,而不是查找哈希表)執行相同操作,或者您可以將它們轉換為數值並直接使用它(我應該為 MySQL 存儲什么類型的 IP 地址? ),這是最佳的兩個空間- 和性能方面,只是不是(直接)非常易讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.