建议改进数据库设计

问题描述

| 设计:- 1)故事板有许多幻灯片,每个幻灯片可以有一个或多个字幕或图像。 2)每个分镜脚本可以有一个或多个作者,而零个或多个评论者。 3)每个对象的图像,幻灯片和标题(可能更多的对象稍后会像音频一样出现)都可以对其进行注释。这些评论可以由作者或审稿人给出。为了存储评论,我创建了一个评论表。 4)有必要记住幻灯片的顺序和幻灯片中图像的顺序,为此我使用幻灯片和图像编号字段。 5)由于可以对任何对象进行注释,因此我需要为每个对象都具有一个全局ID,因为它们的引用将存储在注释表中。为了维护全局ID,所有以名称GID结尾的字段都是生成的唯一标识符使用默认值:NEWID()。 6)用户存储在用户表中。 7)用户应该只能查看和加载他是作者,审阅者或所有者的情节提要。 请提出对此数据库设计的改进建议。     

解决方法

我看到不是所有的表都有一个PK,实际上我只看到用户表有一个PK,情节提要使用名称和所有者作为PK? 我喜欢对我的所有表都使用id,除了用于NxN关系的中间表,就像您在作者和审阅者中所做的那样。您进行了相同的操作,但您将其称为GID。我会将它们用作PK(以及自动增量)。 如果某个对象与另一个表上的另一个对象具有相同的GID,请不要担心,因为在注释表中,您有一个“ 0”来指定与该对象相关的表。因此,如果用户的GID与StoryBoard的GID相同就可以。 我不习惯使用sql-server图,但是似乎关系定义不明确:我看到用户和情节提要之间的关系是1xN,但看起来情节提要和幻灯片之间的关系是1x1。 ,也应该是1xN 情节提要有一个所有者和不同的作者,这意味着如果我创建一个情节提要,该情节提要将在OwnersUserId中拥有我的ID,并且我的ID也将存储在authors表中?如果是,似乎没有必要。或者....这取决于您模型的概念。我看到两个选择: 故事板有一位作者和一位 或许多合作者 (不要更改模型,仅将authors表重命名为合作者或更精确的名称) 一个StoryBoard有一个或多个 作者,其中之一是 所有者 (删除用户和情节提要之间的1xN关系,并在“作者”表中添加一个“ 1”列) 最后的观察:   用户应该只能查看和加载由他创建的情节提要。 它不会更改数据模型。=),但是,如果只有作者可以查看情节提要,那么谁来审阅它们? 我的观察只是肤浅的,我发现模型已经很好地适应了问题 祝好运     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...