我终于偶然发现了一个我已经找不到答案的问题...
我正在开发一个数据库,该数据库将存储随时间记录的采样数据。最初,客户建立了一个非常特定于他们当前记录的数据的表,但是,他们担心随着它们的扩展,收集的数据可能会开始变化,并且可能会出现更多或至少不同的列需要。
当前型号:
+------------------+ +------------------+
| 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 |
+------------------+
我的问题是:
- 这是设计数据库的最佳方式,还是有我不熟悉的更好方式。
- 如何形成查询语句以返回每个数据记录及其每个关联列?
- 是否有普遍接受的良好数据类型可用作 DATA_POINT.VALUE?例如浮点数、十进制数...?
非常感谢你的帮助。
真挚地,
内特·K。