Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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_Foreign Keys - Fatal编程技术网

SQL表设计适用于可以向用户留下反馈的用户

SQL表设计适用于可以向用户留下反馈的用户,sql,database-design,foreign-keys,Sql,Database Design,Foreign Keys,我正在设计一个网站,用户可以发布某些东西,其他用户可以在上面出价。所以,在一切都解决之后,他们可以把评论留给彼此,让我们称之为“工作”。在反馈表中,我想我需要有两个用户标识,一个是留下反馈的人,另一个是收到反馈的人。当用户离开评论时,在接收者的用户ID上创建FK更有意义,因为这些反馈将在接收者配置文件页面上查看 或者我在这件事上完全错了 在反馈表中,我想我需要有两个用户ID,一个是留下反馈的人,另一个是收到反馈的人 反馈与两个用户相关:发送者(留下反馈)和接收者。要表示这种关系,您需要在反馈表

我正在设计一个网站,用户可以发布某些东西,其他用户可以在上面出价。所以,在一切都解决之后,他们可以把评论留给彼此,让我们称之为“工作”。在反馈表中,我想我需要有两个用户标识,一个是留下反馈的人,另一个是收到反馈的人。当用户离开评论时,在接收者的用户ID上创建FK更有意义,因为这些反馈将在接收者配置文件页面上查看

或者我在这件事上完全错了

在反馈表中,我想我需要有两个用户ID,一个是留下反馈的人,另一个是收到反馈的人

反馈与两个用户相关:发送者(留下反馈)和接收者。要表示这种关系,您需要在
反馈
表中有两个外键,它们引用
用户
表。这样,就可以跨表强制执行完整性(并确保每个发送方和接收方都是有效用户)。每一个反馈都与一个产品有关,但似乎你已经考虑到了这种关系

因此:


是的,这是我的疑问。。我应该在同一张桌子上放两个fk吗。。但是现在当我想到。。为什么我不应该?感谢manWelcome@drmausama!外键是用来保证数据完整性的,所以它们在这里很有意义。您给产品留下了反馈,所以需要:author\u id,product\u id。author\u id应该有fk to Users表,product\u id to Products。不需要“接收者用户id”,因为你们可以通过产品表得到它。我把反馈留给了用户。我希望其他人能够查看这个用户配置文件和他的所有反馈,以及那些给作者留下反馈的人。我刚刚在您的反馈表中看到了productID,并且正在考虑它的产品。因为若您将反馈留给用户,那个么您可能不需要productID?若只按ProductID将反馈表与products连接起来,并按UserID设置过滤器(在products表中),则可以在用户配置文件中获得所有反馈。
Feedbacks
    ReceiverId        foreign key to Users(UserId)
    SenderId          foreign key to Users(UserId)
    ProductId         foreign key to Products(ProductId) 
    ...