用户想要动态添加UI中的新字段。这个新字段应该存储在数据库中,并且应该允许它们对它执行CRUD。
现在我可以通过指定XML来实现这一点,但我想要一种更好的方法来搜索这些新列。此外,触发ALTER
语句并添加新列的想法似乎是错误的。
任何人都可以帮我解决一下数据库服务器端的设计模式如何解决这个问题?
答案 0 :(得分:7)
可以使用键值系统来解决这个问题。您可以创建一个表,其中包含要注释的表的主键列,属性名称列以及值的列。当用户想要将属性(比如身高)添加到人123的记录时,您可以使用值(123,'HEIGHT','140.5')向新表添加一行。
通常,您将值转换为TEXT以进行存储,但如果您知道所有属性都是数字,则可以为值列选择不同的类型。您也可以(不推荐)根据数据类型使用多个不同的值列。
此技术的优点是您无需修改数据库结构即可添加新属性,并且仅为具有这些属性的记录存储属性。缺点是查询并不像列完全在主数据表中那样简单。
答案 1 :(得分:1)
没有理由不允许合格的业务用户向表中添加列。它不太可能导致问题,而不仅仅是你可以想象的任何事情,包括向表中添加新行或更改。数据元素的值。
使用上述任何一种方法都不会避免任何风险;它们只是对COBOL填充字段的回归或数据库功能的不必要的修饰。结果仍然可以是非标准化和不准确的。
这些相同的业务人员将电子表格和表格的列添加到Word文档中,而不会让DBA妨碍他们。
当然,添加列只是使信息系统工作的最小部分,但通常情况下,它被认为是一个几乎无法克服的障碍。假设你知道放在哪里,它实际上是5分钟的工作量。使用正确的数据类型将列添加到正确的表中很容易,易于使用,并且最有可能提高数据质量。
答案 2 :(得分:0)
找出用户添加的最大字段数,然后手动添加。例如'User1','User2','User3','User4'......等。然后,您可以根据一些可配置的设置启用UI上的字段。