Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何设计多用户数据库?_Sql_Database Design_Database Schema - Fatal编程技术网

Sql 如何设计多用户数据库?

Sql 如何设计多用户数据库?,sql,database-design,database-schema,Sql,Database Design,Database Schema,我正在做一个活动策划网站。在这个网站上,将会有很多用户。每个使用者都有自己的无菌区。 例如:每个用户都可以创建一个活动和一个来宾列表。现在,可能是创建活动的两个人想要邀请同一个人。我希望那个人(来宾)在数据库中被创建两次。以下是我的想法: 多数据库 我会为每个新用户创建一个数据库,每个数据库都有一个相同的模式 前缀表 例如,如果我们谈论的是用户234和342,那么将有两个表(具有相同的模式)234_guests和342_guests 一张桌子来统治他们 将有一个大的guests表,主键的一部分将

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

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

前缀表 例如,如果我们谈论的是用户234和342,那么将有两个表(具有相同的模式)234_guests和342_guests

一张桌子来统治他们 将有一个大的guests表,主键的一部分将是对guests所属用户的引用

澄清: 我将试图澄清我的问题: 约翰在我的网站上开了一个帐户。他正在为女儿筹划婚礼。鲍勃还在我的网站上开了一个账户,他正在计划他儿子的成年礼。鲍勃和约翰都认识一个叫吉姆·哈尔伯特的人。鲍勃和约翰都邀请吉姆参加他们的婚外情。为了登记客人,你必须输入他的信息。很明显,我不希望Bob和John访问相同的来宾(即使他们是同一个人!),我的问题是如何在这样的实例中设计数据库


考虑到性能、逻辑和数据库规范化,什么是最好的?

还有其他选择吗?

根据我在这里收集的信息,您将得到以下裁定=>

  • 一个活动可以与多个来宾建立关系
  • 来宾可以与多个活动建立关系
您可以使用连接表,而不是创建同一个人的多个实例。从理论上讲,这样做可能会复制大量数据

下面的链接演示了使用连接表的好处。它们可以用在上面的例子中,在这些例子中,活动和客人之间有一种多对多的关系

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


希望这能有所帮助。

我可能过于简化了,但我会这样做:

创建一个包含字段EventGUID、位置、日期等的事件表。。。然后在来宾表中包含EventGUID字段。此表可以包含以下字段:GuestGUID、EventGUID、名称、地址等

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

在您的示例中,John在事件表中有一个条目,比如EventGUID='abc',Bob在事件表中有一个条目,EventGUID='xyz'。Jim Halpert的来宾表中将有两个条目。第一个将有GuestGUID='123'和EventGUID='abc'(这是John的事件),第二个将有GuestGUID='456'和EventGUID='xyz'(这是Bob的事件)


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

一个数据库x用户?在数据库上复制用户?我想你必须花更多的时间重新思考你的设计。正如在给出的第一个答案中所指出的,您最终将得到大量不必要的重复数据。