我正在制作活动策划网站。在这个网站中,会有很多用户。每个用户都有自己的无菌区域。
例如:每个用户都可以创建一个事件和一个客人列表。现在,创建活动的两个人可能会邀请同一个人。我希望在数据库中创建两个人(访客)。以下是我的想法:
我会为每个新用户创建一个数据库,每个数据库都有一个相同的模式。
例如,如果谈论用户234和342,则会有两个表(具有相同的模式)234_guests& 342_guests。
会有一个大宾客桌,主键的一部分也是对宾客所属用户的引用。
澄清: 我会试着澄清我的问题: 约翰在我的网站上开设了一个帐户。他正计划为女儿举办婚礼。 Bob还在我的网站上开设了一个账户,他正计划他的儿子Bar Mitzva。 Bob和John都知道一个名叫Jim Halpert的人。鲍勃和约翰都邀请吉姆参与他们的婚外情。要注册访客,您必须输入他的信息。我显然不希望Bob和John能够访问相同的访客(即使他们是同一个人!),我的问题是如何在这样的实例中设计数据库。
什么是最好的,考虑到性能,逻辑,数据库规范化?
还有其他选择吗?
答案 0 :(得分:0)
从我在这里收集到的是你将有以下裁决=>
您可以使用Junction表,而不是创建同一个人的多个实例。从理论上讲,你最终可能会以这种方式复制大量数据。
以下链接演示了使用连接表的好处。它们可用于上面的例子,其中有Event&客人有多对多的关系。
这篇文章中的例子涵盖了类似的困境,多课堂& amp;多个学生。
http://megocode3.wordpress.com/2008/01/04/understanding-a-sql-junction-table/
希望这有助于。
答案 1 :(得分:0)
我可能过度简化了这一点,但这就是我要做的事情:
使用字段EventGUID,Location,Date等创建一个Event表...然后在Guest表中包含EventGUID字段。此表可以包含以下字段:GuestGUID,EventGUID,Name,Address等...
这样,您可以为访客设置一个表格,并且可以轻松地将它们链接回他们被邀请参加的活动。
在你的例子中,John会在Event表中有一个条目,比方说EventGUID ='abc',Bob会在Event表中有一个条目,EventGUID ='xyz'。 Jim Halpert的Guest表中有两个条目。第一个将有GuestGUID ='123'和EventGUID ='abc'(这是约翰的事件),第二个将有GuestGUID ='456'和EventGUID ='xyz'(这是Bob的事件)。
使用此方法比为每个用户创建数据库或表格要清晰得多。