【问题标题】:Thoughts/Input about Database Design for a CMS关于 CMS 的数据库设计的想法/输入
【发布时间】:2011-02-23 22:21:56
【问题描述】:

我正要扩展我们自己的 CMS 的功能,但正在考虑重组数据库,以便更简单地添加/编辑数据类型和值。

目前,CMS 非常扁平化 - CMS 需要在数据库中为每种类型的存储值(手动创建)提供一个字段。

想到的第一个选项只是一个保存数据类型(即:地址 1、郊区、电子邮件地址等)的表和另一个保存这些数据类型的值的表。就像 Wordpress 如何将值保存在“选项”表中一样,PHP 序列化将用于存储值数组。

第二个选项是 Drupal 的工作方式,CMS 为每种数据类型创建表。与 Wordpress 不同,这可能有点矫枉过正,但在按特定值排序和分组时对 SQL 查询非常有用。

大家的想法是什么?

【问题讨论】:

  • 您说的是 CMS(内容管理系统)还是 CRM(客户关系管理)产品?听起来你混淆了两者。
  • 我在整个问题中都在谈论 CMS。我要问的主要问题是如何构建数据库的最佳方法是什么? Wordpress Vs Drupal 构建数据库的方法。
  • 我认为 My Lively 想知道您所说的 CMS 是什么意思。有关可能性,请参见此处en.wikipedia.org/wiki/CMS

标签: php sql mysql database content-management-system


【解决方案1】:

在我看来,您应该尽可能避免序列化。您的关系数据库应该是关系数据库,因此应该是这样构建的。这将包括“Drupal 方法”,例如每种数据类型一张表。从某种意义上说,这还可以使您的数据库保持健康,从而可以轻松地对其进行索引和查询。

【讨论】:

  • 非常好,我已经采用了为不同数据类型动态创建表的过程。这产生了一个更好的系统。
【解决方案2】:

除非您计划将来添加许多现在未知的不同数据类型,否则这不会真正帮助您,而且会有点过头了。如果您的数据表非常宽且有很多漏洞(即,很多列似乎随机为 NULL),那么这是一种模式,可能会为可能只属于某些条目的数据创建一个单独的表。

保持简单和合乎逻辑。不要为了抽象而抽象。事实上,存储整数在存储空间方面更便宜,但除非这是一个问题,否则不要在这种情况下这样做。

【讨论】:

  • 您好 Lloyd,在与我们所有的客户仔细考虑之后,最好的方法是为每种数据类型(博客、照片、推荐)创建一个新表。我们有一个记录结构的主表,我们根据这个结构动态创建/修改表。
  • 我们用数据库中的1000万行测试了每个场景,速度是我们最大的考虑因素。与一个表充满键和另一个表充满值的分段数据库相比,选择、插入、更新和删除表行要快得多且高效。
  • 一个好的解决方案:干净的分离,简单而合乎逻辑。达拉斯干得好,干得好。
猜你喜欢
  • 2010-11-06
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 2011-10-26
  • 1970-01-01
相关资源
最近更新 更多