我有一个应用程序,允许“联系人”完全自定义。我这样做的方法是让管理员设置联系人允许的所有字段。我的数据库如下:
联系人
- ID
- 活性
- lastactive
- created_on
字段
- ID
- 标签
FieldValues
- ID
- fieldid
- 的ContactID
- 响应
因此联系表只会告诉他们是否有效以及他们的标识符; fields表只保存字段和标识符的标签,而fieldvalues表实际上是联系人的数据(名称,地址等)
所以这个设置对我来说还不错,直到现在。客户希望能够提取累积报告,但要说明某个城市中所有联系人的状态。实际上,数据必须如下所示
加利福尼亚 (来自字段表)
- Costa Mesa - (来自字段表) 5 - (在字段值表中计算)
- Newport 2
康涅狄格
- Wallingford 2
- 克林顿2
- 柏林5
状态字段可能是id 6,城市字段可能是id 4.我不知道我是否刚刚看过这种代码方式以便想出来或者是什么,
找到用于创建这三个表的SQL答案 0 :(得分:0)
你有一个Entity Attribute Value(EAV)模型。使用field
和fieldvalue
表仅搜索 - WHERE caluse。然后通过以序列化格式将完整实体的数据保留在主表(例如Contacts.data
)中的CLOB中来使生活更轻松(WDDX对此有利)。阅读data
列,反序列化,并在服务器端使用。这比你需要做的无数连接要容易得多,否则从EAV设置中重现完全水合的实体。