繁体   English   中英

数据库设计-实体-属性-值模型查询

[英]Database Design - Entity–attribute–value Model Query

我终于偶然发现了一个我无法找到答案的问题...

我正在使用一个数据库,该数据库将存储随时间推移记录的记录的采样数据。 最初,客户建立了一个非常特定于他们当前正在记录的数据的表,但是,他们担心,随着它们的扩展,收集的数据可能会开始变化,并且可能会出现更多或至少不同的列需要。

当前模型:

+------------------+     +------------------+
|    FACILITIES    |     |   DATA_RECORD    |  
+------------------+     +------------------+  
| ID               |     | ID               |
| NAME             |     | FACILITY_ID      |
| DESC             |     | TIMESTAMP        |
| etc.             |     | TEMP_WATER       |
+------------------+     | TEMP_AIR         |
                         | pH_WATER         |
                         | etc...           |
                         +------------------+

我认为数据库应设计如下:

+------------------+     +------------------+     +------------------+
|    FACILITIES    |     |   DATA_RECORD    |     |   COLUMNS        |  
+------------------+     +------------------+     +------------------+  
| ID               |     | ID               |     | ID               |
| NAME             |     | FACILITY_ID      |     | NAME             |
| DESC             |     | details etc..    |     | DESC             |
| etc.             |     +------------------+     | UNITS, etc...    |
+------------------+                              +------------------+

+------------------+ 
|    DATA_POINT    | 
+------------------+ 
| ID               | 
| DATA_RECORD_ID   | 
| COLUMN_ID        | 
| VALUE            | 
+------------------+ 

我的问题是:

  1. 这是设计数据库的最佳方法,还是我不熟悉的更好的方法。
  2. 如何形成查询语句以返回每个数据记录及其关联的列?
  3. 是否有普遍公认的良好数据类型可用作DATA_POINT.VALUE? 例如浮点数,小数点...?

非常感谢你的帮助。

真诚的

内特·K

考虑到您的需求,我认为您将更倾向于实体-属性-值类型的设计,这种类型通常很难查询(尽管设置起来非常简单)并且扩展性很差。

您可以在此网站或Google上搜索EAV模型,以查看有关此问题的讨论。

http://www.simple-talk.com/content/print.aspx?article=843

实体属性值数据库与严格的关系模型电子商务

http://tkyte.blogspot.com/2009/01/this-should-be-fun-to-watch.html

对于您的情况,是否可以发布需要收集的不同类型的设施和数据点? 也许您可以使用类型和子类型对此进行建模?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM