Web applications 如何存储每个用户的参数-征求意见
对不起,这是一个非常开放的问题 我想让我的网站上的用户能够修改html/css参数的模板,他们使用他们的个人资料-有点像myspace(真的,真的很抱歉使用这个作为一个例子…) •有一个用户可以选择的“主题”库 •有些主题可以定制,有些则不能 •主题不一定具有相同的可定制参数 我想为每个用户存储定制变量,针对他们选择定制的每个主题。这个最好的格式是什么 DB本可以Web applications 如何存储每个用户的参数-征求意见,web-applications,parameters,Web Applications,Parameters,对不起,这是一个非常开放的问题 我想让我的网站上的用户能够修改html/css参数的模板,他们使用他们的个人资料-有点像myspace(真的,真的很抱歉使用这个作为一个例子…) •有一个用户可以选择的“主题”库 •有些主题可以定制,有些则不能 •主题不一定具有相同的可定制参数 我想为每个用户存储定制变量,针对他们选择定制的每个主题。这个最好的格式是什么 DB本可以 -------------------------------------- user id | theme id | custom
--------------------------------------
user id | theme id | custom parameters
--------------------------------------
我怎么能储存这样的东西
背景颜色=#34ed55
bg image=bg.jpg
字体=漫画版
颜色=554323
css=h1{
字号:1em;
颜色:蓝色;
}
.定制{
填充:10px;
}如果参数都是相同类型的(例如字符串值),则可以使用单独的参数表来映射表示用户主题属性的键/值对
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”)。如果参数都是相同类型的(例如字符串值),您可以有一个单独的参数表来映射表示用户主题属性的键/值对
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”)。您可以使用以下表:
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
使用此方法可以从级联删除中获得一些良好的行为。如果某个参数不再存在,则只需将其从自定义参数中删除,并将其从用户设置中删除。如果要删除整个主题,它将级联到自定义参数,删除所有相关参数,然后删除所有相关用户参数
只需确保设置用户设置表,以便在删除主题时将主题id设置为某个默认主题,而不会删除该行 您可以使用以下表格:
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
使用此方法可以从级联删除中获得一些良好的行为。如果某个参数不再存在,则只需将其从自定义参数中删除,并将其从用户设置中删除。如果要删除整个主题,它将级联到自定义参数,删除所有相关参数,然后删除所有相关用户参数
只需确保设置用户设置表,以便在删除主题时将主题id设置为某个默认主题,而不会删除该行 您可以创建一个包含自定义参数的类,并将该类的序列化版本存储在表中的CustomParameters字段中。在我的例子中,我扩展了现有的Users类,以获取和设置UserCustomParameters类中的值 这样做的好处是,一旦它到位,我就不必修改我的数据库 当然,您必须决定是否需要在表中使用自己的字段。对我来说,简单的用户设置,比如那些控制外观的设置,不需要自己的字段
正确序列化和取消序列化类是最耗时的部分。您可以创建一个包含自定义参数的类,并将该类的序列化版本存储在表的CustomParameters字段中。在我的例子中,我扩展了现有的Users类,以获取和设置UserCustomParameters类中的值 这样做的好处是,一旦它到位,我就不必修改我的数据库 当然,您必须决定是否需要在表中使用自己的字段。对我来说,简单的用户设置,比如那些控制外观的设置,不需要自己的字段 正确序列化和取消序列化类是最耗时的部分