数据库多字段类型的最佳实践

时间:2014-12-04 12:10:47

标签: mysql database database-schema

我正在创建一个cms系统,用户可以在其中创建要在网站模板中使用的字段。我想创建不同的类型,例如' string',' html','整数'用户还必须能够以不同的值添加这些字段,因此我至少需要两个表。

我的问题是:我应该为每个字段值类型创建一个表并在代码中捕获它,还是应该将所有字段值类型存储在一个表中?

选项1: 每种类型的表

+---------------+    +-----------------+    +--------------------+
| Fields        |    | field_int_value |    | field_string_value |    etc...
+---------------+    +-----------------+    +--------------------+
| id            |    | field_id        |    | field_id           |
| field_type_id |    | language_id     |    | language_id        |
+---------------+    | value (int)     |    | value (varchar)    |
                     +-----------------+    +--------------------+

选项2: 将所有值存储在一个表中。保留未使用的值NULL

+---------------+    +-----------------+
| Fields        |    | field_value     |
+---------------+    +-----------------+
| id            |    | field_id        |
| field_type_id |    | language_id     |
+---------------+    | value_int       |
                     | value_string    |
                     | etc...          |
                     +-----------------+

我一直在思索什么是最好的选择,但我似乎无法找到更好的选择。有没有人有任何想法?

更新 - 一些示例:

用户可以例如使用他或她的电话号码创建一个字符串。在代码中,模板将调用此字段以显示电话号码。如果用户想要更改它,他们只需编辑管理员中的值,而无需担心编辑模板。

另一个例子是一个布尔值,允许用户显示某个“号召性用语”'在页面上。此布尔值将用于隐藏模板中的某些内容,而无需更新模板。

我的Field模型将是处理所有这一切的模型。在这里,我将创建函数来获取特定类型的字段。

0 个答案:

没有答案