我正在创建一个模块化系统,其中每个模块都与其他模块分开。我想将模块配置数据存储在数据库中,但我不知道最好的结构。
我有一些变体:
第一个:
key_____|______value (primary key is `key`)
option1 | 1
option2 | abcd
option3 | bla-bla-bla
我可以轻松获取设置,但如果我想更新一些设置,我需要使用 CASE 构建硬 (?) SQL 查询:
UPDATE settings SET value = CASE
WHEN key = option1 THEN 1;
WHEN key = option2 THEN abcd;
…
END
WHERE key IN (option1, option2, …)
如果有一个更好的变体可以在一个查询中更新多行(我将只使用 MySQLi 和 InnoDB),那就太好了。
第二:
module_____|_____settings
news | a:3:{s:7:"option1";i:1;s:7:"option2";s:4:"abcd";s:7:"option3";s:11:"bla-bla-bla";}
这样,我将使用设置序列化一个数组并将其放入数据库中。我想在 .php 文件中缓存未序列化的数据。但是如果我有很大的设置数组,我的序列化字符串会非常非常大。
第三:
option1 | option2 | option3
1 | abcd |bla-bla-bla
我将为一个选项键设置一列,但我认为创建一个表来存储一行是不必要的。
哪种变体最好?你能建议你自己的方法来存储配置吗?谢谢!