对不起,这是一个非常开放的问题!
我希望我的网站上的用户能够修改他们用于配置文件的模板的html / css参数 - 有点像myspace(真的,非常抱歉使用它作为示例......)。
•用户可以选择“主题”库 •某些主题可以自定义,有些则不能 •主题不一定具有相同的可自定义参数
我想为每个用户存储他们选择自定义的每个主题的自定义变量。什么是最好的格式?
DB可以
--------------------------------------
user id | theme id | custom parameters
--------------------------------------
我怎么能存储像这样的东西 bg color =#34ed55 bg image = bg.jpg font = comic sans color = 554323 css = h1 { 字体大小:1em的; 颜色:蓝色; } .customCss { 填充:10px的; }
答案 0 :(得分:2)
如果参数的类型都相同(例如字符串值),则可以使用单独的参数表来映射表示用户主题属性的键/值对。
user_theme
user_id
theme_id
user_theme_parameters
user_id
key
value
表格可能像:
user_id key value
1 bgcolor #000000
1 bgimage bg.jpg
2 font Arial
如果主题共享公共密钥,您可以将参数密钥分解为另一个表,并在此处通过ID引用它们,而不是复制密钥字符串(例如“bgcolor”)。
答案 1 :(得分:1)
您可以使用以下表格:
custom_param:
param_id
theme_id
param_name
user_params:
user_id
param_id
value
user_settings:
user_id
... -- whatever other user settings you store
theme_id -- for current theme
使用此方法从级联删除中获得一些好的行为。如果参数不再存在,那么您只需将其从custom_param中删除,然后将从用户的设置中删除。如果要删除整个主题,它将级联到custom_param并删除所有相关参数,然后删除所有相关的user_params。
只需确保设置你的user_settings表,这样当主题被删除时,它会将theme_id设置为某个默认主题,并且不会删除该行!
答案 2 :(得分:0)
您可以创建一个类来包含自定义参数,并在表的CustomParameters字段中存储该类的序列化版本。在我的例子中,我扩展了现有的Users类,以便在我的UserCustomParameters类中获取和设置值。
关于这一点的好处是,一旦它到位,我就不必修改我的数据库了。
当然,您必须决定是否需要在表中使用自己的字段。对我来说,简单的用户设置,比如控制外观的设置,不需要自己的字段。
正确地序列化和反序列化该类是最耗时的部分。