假设我们有多站点CMS,并且此CMS中的每个网站都有2个选项:preview_width和preview_height。我们知道,如果用户没有定义,每个选项都应该有默认值。我们也知道,选项列表将在不久的将来得到扩展。在MySQL表中存储这些选项的最佳实践是什么?
我知道三种做法,而且两种做法都缺乏(或者我可能不知道如何正确使用这种做法)......
练习#1:每个选项都是
表示为options
中的列
表。
缺点:我们应该
每次修改options
表
我们正在添加新选项。
练习#2:存储所有选项 作为序列化对象/数组 站点表的选项列。
缺点:添加新选项 默认值 - 我们需要循环 通过所有行和修改 序列化选项;或者我们可以添加 请求此选项时 发现不存在。
练习#3:存储所有选项 在带有结构的选项表中:id, site_id,option_name,option_value。
缺点:添加新选项时,我们应该使用每个网站的默认值选项更新此表。
你有什么选择? 在经常添加新选项时选择什么做法? 还有其他做法吗?
谢谢。
答案 0 :(得分:0)
我会使用练习#3。为了存储默认值,您可以尝试编写方法来获取选项:
get_value(option) {
value = read_from_db(option);
if value == not_present_in_db {
value = default_value(option);
}
return value;
}
您还需要编写default_value(option)
方法,该方法应在配置文件中查找某些默认值或其他内容。