我正在翻修我们的CMS,并且遇到了一种我不知道要采用哪种解决方案的情况。基本上,我们的每个客户都将其网站的内容包含在自己的数据库中。这包括内容,调查,访问者使用的搜索单词,菜单strucutre等。

我们客户网站上的许多内容都是动态的,它们可以通过CMS更改它们。所有这些数据都保存在我设计的关系数据库中,但是我正在某种情况下运行,其中将这些偏好固定在表中会过大。

例如,CMS允许他们将电子邮件发送到收件人列表。他们可以选择使用我们的服务器,也可以放入自己的SMTP服务器。但是,在这种情况下,用“ MailService”列创建一个表格并具有特定值,因为该表仅容纳一行将是有点过高的。

这是我在此网站和/或Google上进行一些搜索来提出的一些想法,但是我不太确定他们的优点和缺点是什么:

  • 基本上将所有偏好放在上面提到的表中,我想避免使用。
  • 将所有这些“单个”首选项保存在XML文件中,当它们更改设置时,我会修改它们。
  • 具有一个名为“首选项”的表格,其中包括以下columsn:id,persevenceName,value。每次我有一个新的偏好时,我都会添加它,修改它或删除它(我不喜欢此选项我正在看到实现)

我有点倾向于XML的想法,但我想从Stackoverflow的好社区那里获得一些反馈:)也许使用XML会是一个可怕的想法,因为我完全忽略了或有您的哑巴 - 为什么不差不多,这是这样的解决方案。感谢您的任何输入!

有帮助吗?

解决方案

XML路由可以很好地工作,因为它可以轻松允许添加新的属性并允许将属性分组。缺点是不可能使用SQL迁移或更新偏好数据。必须按计划完成。如果需要,您也无法查询各个属性的首选项。

所有人都说,如果您要维护少量的首选项,而无需查询或通过SQL进行更新,则XML对您来说很好。否则,数据库中的名称,值对表将是更好的方法。

其他提示

如果您已经有一个数据库表,我会说使用一个数据库表,并将设置的名称分为明智的类别:

mail_service:recipients
mail_service:sender
mail_service:smtp:hostname
mail_service:smtp:username
mail_service:smtp:password

除此之外,我更喜欢 Yaml 为了可读性的目的。就像XML,但没有所有的混乱。

 mail_service:
     recipients:
       - recipient1@domain.com
       - recipient2@domain.com
       - recipient3@domain.com
       - recipient4@domain.com

  visuals:
    header:
      text_color: #BBCCDD
      background_color: #FFFFFF

Symfony yaml课 是一个很好的独立库,可以将该文件解析为PHP数组。

您也可以使用简单的PHP文件。

$settings = array(
 "mail_service:recipients" => " .... ",
 "mail_service:sender" => " .... ",    
 "mail_service:smtp:hostname" => " .... ",
 "mail_service:smtp:username" => " .... ",
 "mail_service:smtp:password" => " .... ");

我会选择XML文件(尽管不需要是XML - 如果是Java,我会使用属性文件,直到我找到不要的原因)或一个键/值表(ID字段dimn dimn dimn dimn除非有一些外键可以区分不同的安装)。

我个人喜欢SQL的多功能性和独立的东西。使用数据库不会添加尚未存在的任何复杂性(例如,如果您必须进行性能,则可以免费获得相同的缓存级别。我只有在值具有真正复杂的结构可以使SQL繁琐的操作的结构中,我才会选择XML。

我不确定为什么您认为您需要“硬编码很多值”,特别是为什么与文件解决方案相比,使用数据库解决方案会有更多的硬编码。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top