MySQL动态字段存储未确定的数据类型

时间:2014-08-12 11:49:21

标签: mysql joomla

我目前正在使用MYSQL Workbench为Joomla组件设计数据库,而且我在设计中遇到了绊脚石。

问题描述:

我想允许管理员为前端用户创建要管理的字段。该字段由管理员根据类型和长度确定。

我的设计:

ADMIN_FIELDS (this is the table to store admin defined fields)
id    INT
name  VARCHAR(45)
type  VARCHAR(45)

USER_FIELDS (this is the table to store user information in the fields defined by admin)
id        INT
value     LONGTEXT
admin_field_id FK_ADMIN_FIELDS  

问题:

  1. 由于我不知道值字段的长度,因此我选择了LONGTEXT作为数据类型。这可以从布尔值到LONGTEXT大小,具体取决于管理员选择的数据类型。鉴于我的问题,这是一个很好的数据库设计技术?有更好的方法吗?

  2. 如果我将LONGTEXT用于像布尔一样小的东西,是否有性能损失?在最糟糕的情况下,如果管理员决定在他的网站的所有字段上全部疯狂地使用布尔值,并且假设他有十亿用户创建这些值。那么该网站会遭受性能损失吗?

  3. 如果没有性能损失,那么为什么我们甚至懒得将数据存储到相关的数据类型中。为什么不将LONGTEXT用于一切?

  4. 提前感谢您的回答。

1 个答案:

答案 0 :(得分:0)

感谢您的评论。我做了一些研究,找到了适合我需求的解决方案。我基本上设计组件以允许管理员创建自定义表。因此,该组件将存储管理员定义的表模式。

我选择不使用Cck或其他表单扩展名,因为我希望该组件能够处理与其他组件的智能集成。因此,本质上,组件将直接与数据库连接,同时允许其他组件轻松调用我的组件。