我有一个SAAS产品,它是由Spring MVC和Hibernate构建的。一般情况下,SAAS产品允许用户自定义产品,比如在表格中添加额外的字段。
所以我想给用户更多的灵活性,在表格中为他们自己创建自定义字段。
请提供所有可行的解决方案来实现它。
非常感谢你的帮助。
发布于 2016-11-02 23:42:21
我猜你是想把它备份到关系型数据库中。主要问题是关系数据库将数据存储在表中,而表并不能很好地处理自由格式的数据。
因此,一种解决方案是使用灵活的文档结构,如XML (可能会抛弃数据库),但数据库具有很好的特性,因此让我们也考虑使用数据库的方法。
您可以创建一个“自定义字段”表,该表将包含以下列(复合主键
ExtendedTable ColumnName
但你也必须将数据存储在某个地方
(ExtendedKey) DataItem
现在我们进入了真正令人讨厌的部分。您将如何对此数据应用约束?我的意思是,DataItem的类型是什么?一般的解决方案将非常复杂(作为一种自由格式的数据库)。希望您可以将解决方案限制为只解决您需要解决的问题。
另一种方法是使用包含XML记录的单个“额外”列,该记录嵌入了自己的“列和值”扩展,但是如果希望高效地显示表,则必须解析出每个字段中的每个XML文档,这并不理想。
这两种方法都不能很好地与现有的SQL查询语言配合使用,因此您将开始构建自己的查询语言。
我建议您回去查看实际的数据需求,而不是在您的表上使用“和任何其他可能需要的”列集将它们扫到表的下面。
发布于 2016-11-03 00:12:53
您的需求最适合NoSQL数据库(如MongoDB)的用例。
在应用程序中根据用户请求动态创建关系数据库表和列(修改模式)不是最佳实践,因为这些操作涉及到非常强大的DDL操作,如果您不小心处理它们,整个应用程序的数据库就会进入不一致的状态。
https://stackoverflow.com/questions/40383924
复制相似问题