Database SQL数据库设计(用户和视频制作者)

Database SQL数据库设计(用户和视频制作者),database,postgresql,database-design,relational-database,Database,Postgresql,Database Design,Relational Database,我必须建立一个关系数据库,其中有用户和视频制作者,每个用户都可以向视频制作者请求一个视频,然后视频制作者将视频发送给用户,但我不知道如何在数据库中处理这种情况,我应该为用户创建一个表,为视频制作者创建一个表,并创建一个包含“请求”我把用户ID、videomakerId和请求文本放在哪里 因为如果有用户的请求,我必须通知每个视频制作人 像这样: 这是一个好的解决方案吗 谢谢, Davide您的图表看起来很正常,并且已规范化 对于更复杂的情况,使用工具来设计数据库。一个著名的工具是。基本上;识别所

我必须建立一个关系数据库,其中有用户和视频制作者,每个用户都可以向视频制作者请求一个视频,然后视频制作者将视频发送给用户,但我不知道如何在数据库中处理这种情况,我应该为用户创建一个表,为视频制作者创建一个表,并创建一个包含“请求”我把用户ID、videomakerId和请求文本放在哪里

因为如果有用户的请求,我必须通知每个视频制作人

像这样:

这是一个好的解决方案吗

谢谢,
Davide

您的图表看起来很正常,并且已规范化

对于更复杂的情况,使用工具来设计数据库。一个著名的工具是。基本上;识别所有实体,然后在实体之间建立关系


您还需要了解。

看起来是一个良好的开端。要跟踪状态更改,您可能需要添加请求状态表:

RequestStatus
    RequestStatusID
    RequestID
    Status      --maybe text, maybe a lookup into a Status table
    StatusDate

然后,您可以保留每个请求的历史记录。

Mmmh好的,当一个请求被服务时(视频制作者已经交付了视频),我是应该更改记录的状态,还是最好创建一个表“request served”“包含所有已服务请求的,只需将状态设置为已服务请求,或者如果将历史记录保留为@Brian建议,则使用状态请求服务器插入为行。实际上,仅仅为它创建一个表不是一个好主意。好的,谢谢!我应该为视频创建一个表,还是它没有意义?因为只有当视频制作者收到请求时,才会从视频制作者那里创建视频。用户必须查看所有接收到的视频列表@你必须仔细分析需求。记下您需要捕获的所有内容,例如请求的日期/时间和服务的日期/时间等。从中,您可以推断出您需要的实体以及每个实体的属性。如果没有完整的要求,很难给出实际的图表。您需要的每一点信息(属性)都必须注意。我可能会将名称表“Request”更改为更一般的名称,例如Service。通过这种方式,它反映了所有相关的属性。嗯,对不起,我是一个初学者,但我不明白为什么使用此表,只是将属性放入请求表中,并在状态更改时更改它不是一个好的解决方案(例如,当视频交付时,我会将状态从“已交付”中的“待定”更改为“已交付”)?如果您只想要当前状态,您可以这样做。RequestStatus表允许您保存历史记录。例如:4日创建,5日开始生产,8日完成,10日交付。啊,好的,那么RequestID应该是primaryKEY的一部分,RequestStatusID对吗@Brian@Dave,我将只使用RequestStatusID作为PKey;在我看来,RequestID仅用于返回请求表的外键关系。不过,我认为这个问题没有一个“正确”的答案!在您看来,当videomaker交付视频时,只更新表请求并编辑属性“video_url”并用视频url填充它是正确的吗?或者我也需要一张放视频的桌子@布瑞恩