在数据库中进行灵活列的正确方法是什么?

Tim*_*mmy 2 mysql database database-design

我将列存储在数据库中,用户可以使用假列添加和删除列.我该如何有效地实现这一点?

Adr*_*der 6

最好的方法是垂直实现数据结构,而不是正常的水平.

这可以使用类似的东西来完成

TableAttribute
    AttributeID
    AttributeType
    AttributeValue
Run Code Online (Sandbox Code Playgroud)

垂直的这个应用程序主要用于用户可以创建自己的自定义表单和字段的应用程序(如果我正确地回忆起devexpress表单布局允许您创建自定义布局).主要用于CRM应用程序,这很容易修改生产,并且易于维护,但一旦数据集变得非常大,就会大大降低SQL性能.

编辑:

这取决于你想要走多远.您可以将其设置为每个表单/表,添加描述控件的实际控件(查找,组合,日期时间等等)位置的属性,允许值(min/max/allow null).

这可能会成为一项非常繁琐的任务,但在很大程度上取决于您的实际需求.

  • 我确实鼓励downvoting伴随着评论X-) (2认同)
  • 我同意这种方法 - 保持物理和逻辑概念的分离; 我想不出任何让用户实际添加列的服务器是明智的(一个安全风险).从绩效的角度来看,这个appraoch会很有效,但可能需要预先为你学习曲线,但我认为这是值得的.另一个例子:www.morphological.geek.nz/Morphfolia/Capabilities/CustomProperties.aspx (2认同)