Jar*_*ach 11 database-design sql-server
我想以更直接和更一般的方式重新提问:
如何创建一个表来存储可能是多种不同类型的值?
就我而言,这些值提供有关事件的诊断信息。例如:事件发生 -> 存储来自多个 PLC 的读数,其中包含有关事件的相关信息。PLC 可以监控任何类型的数据。
我能想到的一些例子:
Vér*_*ace 10
看起来您已经被告知您正在迷失在通往EAV 模型的道路上。看看这里的图片,了解为什么应该不惜一切代价避免使用 EAV 模型。
负责上图的作者 Bill Karwin 写了一本书“SQL 反模式:避免数据库编程的陷阱”,他将第一章用于 EAV 反模式。他也是这个小组的重要人物,在 StackOverflow上也很出色(针对数据库问题)。
我的建议是为每种类型的结果准备一个表格,然后VIEW
在必要时使用s 将它们组合起来。
例如,你可以有
CREATE TABLE char_result
(
question_id INT,
user_id INT,
cresult CHAR,
result_correct BOOLEAN (or equivalent in your RDBMS)
..
<other stuff>
..
);
Run Code Online (Sandbox Code Playgroud)
对 num_result 做同样的事情,除了用 nresult INT (FLOAT...whatever) 代替 cresult - VARCHAR &c 的想法相同。
然后VIEW
在您的不同结果表上创建s result_correct
(和其他字段 - number_of_attempts
... &c. - 无论您的其他字段是什么)。在这种情况下,您是在比较 like 和 like 而不是按照上面引用的搞笑图片进行相当于将人口添加到海拔高度的计算!
归档时间: |
|
查看次数: |
3124 次 |
最近记录: |