0

我正在制作一个活动策划网站。在这个网站上,会有很多用户。每个用户都有自己的无菌区。
例如:每个用户都可以创建一个事件和一个来宾列表。现在,可能是创建活动的两个人想要邀请同一个人。我希望那个人(客人)在数据库中被创建两次。以下是我的想法:

多个数据库

我会为每个新用户创建一个数据库,每个数据库都有一个相同的模式。

带前缀的表格

例如,如果正在谈论用户 234 和 342,则将有两个表(具有相同的模式)234_guests 和 342_guests。

一张桌子统治他们

会有一个大的客人表,主键的一部分将是客人所属的用户的引用。

澄清:我将尝试澄清我的问题:约翰在我的网站上开设了一个帐户。他正在为女儿筹办婚礼。Bob 还在我的网站上开设了一个帐户,他正在计划他儿子的 Bar Mitzva。Bob 和 John 都认识一个叫 Jim Halpert 的人。鲍勃和约翰都邀请吉姆参加他们的婚外情。为了注册客人,您必须输入他的信息。我显然不希望 Bob 和 John 访问相同的客人(即使他们是同一个人!),我的问题是如何在这种情况下设计数据库。


考虑到性能、逻辑、数据库规范化,什么是最好的?
还有其他选择吗?

4

2 回答 2

0

我可能过度简化了这一点,但我会这样做:

创建一个包含 EventGUID、Location、Date 等字段的 Event 表...然后在您的 Guest 表中包含 EventGUID 字段。此表可能包含以下字段:GuestGUID、EventGUID、名称、地址等...

这样,您可以为客人提供一张桌子,并且他们可以轻松地链接回他们被邀请参加的活动。

在您的示例中,John 在 Event 表中有一个条目,假设 EventGUID='abc',而 Bob 在 Event 表中有一个条目,EventGUID='xyz'。对于 Jim Halpert,Guest 表中有两个条目。第一个会有 GuestGUID='123' 和 EventGUID='abc'(这是 John 的事件),第二个会有 GuestGUID='456' 和 EventGUID='xyz'(这是 Bob 的事件)。

使用这种方法比为每个用户创建一个数据库或表要干净得多。

于 2013-01-24T18:01:45.557 回答
0

从我在这里收集的信息来看,您将有以下裁决 =>

  • 一个事件可以与多个客人有关系。
  • 来宾可以与多个事件建立关系。

您可以使用联结表,而不是创建同一个人的多个实例。从理论上讲,您最终可能会以这种方式复制大量数据。

下面的链接演示了使用连接表的好处。它们可以用在上面的例子中,其中事件和客人有多对多的关系。

这篇文章中的示例涵盖了类似的困境,多个教室和多个学生。

http://megocode3.wordpress.com/2008/01/04/understanding-a-sql-junction-table/

希望这可以帮助。

于 2012-11-29T10:17:45.340 回答