自定义字段和数据类型的设计模式/策略


12

是否有用于设计应用程序的通用策略或设计模式,这些应用程序具有向数据对象添加自定义字段或创建对象的自定义定义的能力。例如,我正在考虑使用诸如SalesForce之类的产品,您可以在其中拥有自己的信息类型,诸如Expression Engine之类的框架以及其处理渠道和渠道字段组的方式(示例),或者像wordpress一样的CMS如何具有以下功能:将字段添加到自定义帖子类型。



值得注意的是:Oracle正在四处起诉以特殊方式(据我所知,是通用的)来实现此目标的每个人。我也会看一眼。
史蒂文·埃弗斯

Answers:



4

正如您所描述的,该EAV模型通常用于非结构化架构。

它的性能以及以临时方式查询此类动态属性的能力……因此许多人认为这是一种反模式。

其他方法是使用动态格式(例如XML或Json)来保存此类属性,并可能为每个属性提供专用存储以帮助搜索。


我还听说过人们使用面向文档的数据库来替代EAV,但是对这种方法没有任何个人经验。
FrustratedWithFormsDesigner 2012年

@FrustratedWithFormsDesigner-这就是我所暗示的内容,但作为您自己,没有任何个人经验。
奥德

4

除了@Oded描述的EAV表之外,人们使用nosql datbase来获取此类信息。请记住,您的应用程序没有理由不能将关系数据库用于对关系模型有意义的部分,而nosql数据库则对没有关系的信息使用。

第三种可能性是为客户添加的字段(Customerfield1,customerfield2等)添加几列,然后让客户定义它们的含义。不过,这仅适用于您添加的客户可比较字段的数量,因此,如果您只希望它们需要两个或三个,但根本不需要,则只需数百个就可以了。


1

您将没有第一个拥有表的应用程序:UDF1,UDF2,UDF3 ...其他建议(EVA或NoSQL)要好得多。

根据RDBMS(SQL Server提供了此功能),您可以打破规范化,并拥有一个字段,以XML格式或纯文本格式保存数据。您将不得不依靠代码来管理它。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.