我正在创建一个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模型将是处理所有这一切的模型。在这里,我将创建函数来获取特定类型的字段。