如何为我的数据库设计可配置的清单表?

时间:2011-01-28 23:46:31

标签: database database-design

我正在研究数据库模型,我需要解决的一个领域是客户端可配置的核对表。理想情况下,客户端会有一组预定义的清单,然后我可以将其作为位列输入。唉,这不会发生。客户希望能够添加和分组清单,以便它们可以重复使用。

我可以使用EAV类型模型并使用字符串表示“真/假”,但我之前一直走在这条路上,宁愿不再重新开始这段旅程。

欢迎任何想法或建议。感谢。

3 个答案:

答案 0 :(得分:2)

“客户端可配置”几乎总是意味着EAV。 EAV的商店数据很好...它只是让数据退出就是诀窍。

- )

另一个......不那么令人反感的方法是制作通用列。 Answer1 BIT,Answer2 BIT,Answer3 ...

如果您这样做,那么创建一个表格,您可以在其中定义列的真实名称,以便为任何给定的检查列表构建正确的视图。

说第一个检查清单是

  • 水箱里的气体?
  • 钱包里的钱?

然后存储

 CheckList_ID     Answer_Number     Column_Name
     1                 1              Tank has Gas
     1                 2              Wallet has Money.

然后视图将是:

 SELECT Answer1 "Tank has Gas", Answer2 "Wallet has Money"
  FROM Generic_Answer_Table
  WHERE CheckList_ID = 1

显然如何动态生成视图。

缺点是,如果你包含10列,那么它们不能超过10列。

XML是另一种可能性,并没有遇到这个问题......但它并不像SQL友好。

答案 1 :(得分:0)

我认为XML将是为他们提供控制的最佳方式,同时保持复选框的动态。可能是每页/部分包含所有自定义复选框的XML文件。 XML的优点在于它易于使用并为您提供了极大的灵活性。在数据库级别,只需将复选框的输出保存为最终数据,以防复选框源XML更改,您仍将看到在数据库级别保存的最初选定值。

答案 2 :(得分:0)

我们正在为此目的构建http://tallyfy.com,尽管操作和数据库表之间的直接关系是新的。