数据库设计动态表

时间:2012-07-04 14:12:22

标签: mysql sql database database-design

我有字段名,f1,f2,f3,f4,f5,f6。这些字段名称将根据其他字段名称的值显示。

实施例, 如果f2值为“COND1”,则必须显示f3 如果f3值为“COND

,则必须显示f4

字段名称不固定,可以添加,编辑和删除。值COND1,COND等也不固定,可以更改。

有人可以指出如何设计数据库 感谢

2 个答案:

答案 0 :(得分:2)

RDBMS的动态表是一种反模式。不要那样做。

也许NoSQL数据库可能更适合您的用例 - 这就是它们的用途。

或者,如果你坚持关系,那么你需要使你的数据库适应动态结构 - 类似于键值表并自己管理结构。即表结构将保留结构元数据和数据。

如果您的结构足够简单,您只需要一个附加表,其中包含复合键 - 原始ID和参数名称。

答案 1 :(得分:1)

如果您的唯一条件是field == value,那么我会考虑这个:

| Field Table |
|-------------|
| id          |
| fieldName   |
|-------------|

| Conditional Table |
|-------------------|
| id                |
| comparisonField   |
| comparisonValue   |
| displayField      |
|-------------------|

因此条件1将具有值1,2,“COND1”,4如果字段2 ==“COND1”则显示字段4

如果你想要其他比较,小于,大于等。还有一个比较表可以链接到条件表。