【发布时间】:2012-07-04 23:02:26
【问题描述】:
我有字段名 f1、f2、f3、f4、f5、f6。这些字段名称将根据其他字段名称的值显示。
例如, 如果 f2 值为“COND1”,则必须显示 f3 f4 必须显示,如果 f3 值为 "COND
字段名称不固定,可以添加、编辑和删除。 COND1、COND 等值也不是固定的,可以更改。
谁能指出如何设计数据库 谢谢
【问题讨论】:
标签: mysql sql database database-design
我有字段名 f1、f2、f3、f4、f5、f6。这些字段名称将根据其他字段名称的值显示。
例如, 如果 f2 值为“COND1”,则必须显示 f3 f4 必须显示,如果 f3 值为 "COND
字段名称不固定,可以添加、编辑和删除。 COND1、COND 等值也不是固定的,可以更改。
谁能指出如何设计数据库 谢谢
【问题讨论】:
标签: mysql sql database database-design
RDBMS 的动态表是一种反模式。不要那样做。
也许 NoSQL 数据库可能更适合您的用例 - 这就是它们的用途。
或者,如果您坚持使用关系,那么您需要让您的数据库适应动态结构——比如键值表,并自己管理结构。 IE。表结构将保留结构元数据和数据。
如果您的结构足够简单,您只需要一个附加表,并带有一个复合键 - 原始 ID 和参数名称。
【讨论】:
如果您的唯一条件是字段 == 值,那么我会考虑:
| Field Table |
|-------------|
| id |
| fieldName |
|-------------|
| Conditional Table |
|-------------------|
| id |
| comparisonField |
| comparisonValue |
| displayField |
|-------------------|
因此,如果字段 2 == “COND1”,则条件 1 将具有值 1、2、“COND1”、4 以显示字段 4
如果您想要其他比较,小于、大于等。还有一个比较器表可以链接到条件表。
【讨论】: