2012-11-20 144 views
0

通过多站点系统,我指的是具有多个相同版本的窗格的系统。一个例子是Gamespot,它显示不同的发布日期甚至不同的游戏,具体取决于你是否在uk.gamespot,us.gamespot等。在PHP中创建多站点数据库体系结构

这里的网站选择不是这个问题。问题在于开发过程和易用性以及如何选择或输入特定于站点的数据。还有各种系统组件可能不需要特定于站点,并且在极少数情况下,为了报告和管理目的,要求所有站点的所有数据都可见并可选择。

以下技术已被认为,虽然我们知道他们会的工作,我们是不满意自己实现的繁琐性:

表视图 - 通过在每个我们可以表格制作针对每个网站的多个视图加载要查询的特定于该站点的数据。但是,内联SQL必须动态调用正确的视图,并且在创建新网站的情况下,必须创建一整套新视图。

SQL修改 - 通过创建SQL中介函数,可以修改SQL以将where子句和连接更改为仅选择特定于站点的数据的目标列。但是,我们认为,通过这种设备运行所有查询可能会遇到严重问题,并会限制我们的查询灵活性。

内联网站条款 - 尽管这是最繁琐和刺激性的实施,但它将被证明是最可靠的,因为我们能够在编码方式上执行标准。虽然这可能是最可靠的,但它对我们的开发人员来说也是最不具吸引力的,这意味着要为几乎每一个查询编写网站子句。因此,我们不是找到在系统的高层实现这个系统的最佳方式,而是试图找到一种方法,它将允许在基本级别上很简单地实现特定于站点的数据选择。

请让我知道这个问题在任何方面是否过于宽泛,我会尽力进一步缩小范围。

第一编辑:

类型跨越网站的数据的是在相对于所述表是相同的。用户表格将在所有网站上共享,并且每个用户只能访问一个,部分或全部网站。

让我们继续介绍Gamespot的例子。一个用户有责任管理英国版本。

关于游戏及其评论的信息来自所有网站的记录,因为这是全球相关信息 但是,可以说发布日期来自另一个特定于网站的表格。 关于游戏的信息以典型的方式检索,但是获取发布日期需要一些额外的代码才能获得正确的网站。

关于用户,无论用户当前正在管理的哪个站点都应该是选择和插入目标的站点。

可以想象,发布日期不是核心表格,每个日期都不能简单地直接映射到它各自的游戏中。

(我并不意味着有Gamespot的的运作的任何知识,这个例子假设)

回答

1

我不认为这是一个普遍的答案在这里,因为我们不知道有足够的了解实际您正在建设的网站。下面是几个问题的例子,这些问题将对最佳设计产生重大影响:

  1. 这些内容大多在网站之间重叠,还是大不相同?
  2. “普通”内容和“特定”内容之间是否有简单的区分? (即内容对所有网站都是共同的,或者只针对一个网站)。还是它需要更灵活?
  3. 您预计需求会随着时间的推移而发展多少?

我的建议是集中精力在正确表结构来存储数据。如果你得到了正确的结果,一个好的软件设计应该自然而然地从它那里流过

当然,随时提问您一路上遇到的具体问题!

编辑:问题更新后,我仍然认为有很多不明确之处,只有在您制定出特定设计时才能解决。但是,如果你想快速回答,我认为内联网站条款是你所建议的三个选项中最好的。其他人增加了不必要的复杂层次。

我不明白为什么内联网站条款是“繁琐”和“恼人”。他们不会在良好的设计中引入重复,因为您可以使用PHP以编程方式处理它们。

+0

我已经更新了我的问题 – Flosculus

+0

我曾预料过内联SQL可能被认为是最可行的。我非常想念我去寻找一颗神奇的子弹。数据库的设计应该规范化,通过正确使用外键和使用站点引用作为查询的基本主题(如果需要),良好的设计应该看到实现相当简单。谢谢你的回答。 – Flosculus