【问题标题】:Cardinality of recursive relationship?递归关系的基数?
【发布时间】:2017-02-25 05:16:24
【问题描述】:

我已经创建了一个用于学校计算机 (CIS) 的数据库,并且我有一些额外的要求要从以下信息中添加。我创建了一个 ERD,但感觉我犯了一些错误,例如递归关系的基数?

如有任何其他反馈,我们将不胜感激。

新要求 CiS 希望使用该数据库通过网站在线共享会话、参与者等的详细信息。任何参与的人——学生志愿者、学校工作人员、SHU 讲师——都可以使用用户名(或者可能是电子邮件地址)和密码登录。登录后,会员以不同的方式使用该网站(学校工作人员请求课程,SHU 讲师管理课程,学生志愿者查看他们可以参加的活动,确认他们的可用性,然后检查时间是否正确)。 CiS 希望能够通过站点共享资源。资源是在会话中或通常对 CiS 目的有用的文件。创建此类文件的成员会上传这些文件,数据库会保存 URL、文件标题、描述等详细信息,并跟踪文件的作者。 成员可以上传文件,成员可以标记它们,给它们评分,并评论它们。

• 标签 是用户分配给文件的关键字。一个文件可以有多个标签;一旦有人用关键字标记了一个文件,其他人就没有必要再次用相同的关键字标记同一个文件。

• 星级。任何站点成员都可以对任何文件进行评分,但不能重新对他们已评分的文件进行评分。

• 评论没有这样的限制,因为最终它们形成了关于每个文件的讨论,因此站点成员可以就这些文件编写许多 cmets。了解每个文件评论的日期、作者和主题会很有帮助。

【问题讨论】:

    标签: mysql database recursion erd cardinality


    【解决方案1】:

    您的图表不是 ERD。特别是,使用线来表示关系会限制您使用二元关系,并且会失去实体-关系模型的大部分表达能力。

    通过在您的用户表中使用Username 和Password 的组合作为主键,您可以允许不同的用户使用不同的密码使用相同的Username。这是你想要的吗?但是,在Upload file 表中,您只存储Author_username,所以也许您只需要Username 作为键?您需要在这里保持一致。

    您的Uploaded file 表需要拆分为多个。目前,它仅支持每个文件/用户名一个标签、一个评级和一个评论。尚不清楚Author_username 是指上传文件的用户还是对文件进行标记、评分和评论的用户。顺便说一句,这些东西在您的表格中链接在一起,防止用户发布比评级更多的标签或 cmets。 File title 和 File description 可能只依赖于File URL,如果存储了多个标签、评级或 cmets,则会重复,从而导致不一致的风险。

    编辑:

    由于您在评论中要求提供建议,我建议:

    1. 使用 Chen 的 ERD 表示法,或者至少是一种使用形状来表示关系并支持三元和更高关系的变体。更好的方法是Object-Role Modeling。
    2. 仅使用 Username 作为 4 个用户表的主键。
    3. 将Uploaded file 拆分为下表:

      • Uploaded file (File_URL PK, File_title, File_description, Username FK)
      • File_tags (File_URL PK/FK, Tag PK)
      • File_ratings (File_URL PK/FK, Username PK/FK, Rating)
      • File_comments (Comment_ID PK, File_URL FK, Username FK, Comment, Created_at, Reply_to_comment_ID FK)

    请注意,这只是为了解决我提出的问题而进行的最小更改,用于教育目的,不一定是满足您要求的适当解决方案。

    【讨论】:

    • 好的,谢谢,所以您建议: 1. 将 author_username 更改为用户名 2. 创建一个从用户信息到上传文件的新链接表? 3.这会包括file_comment和file_rating等属性吗?
    • 我编辑了我的帖子以添加建议。如果您对它们有任何疑问,请告诉我。
    • 1.除了我绘制的方式之外,我无法使用任何其他方式。 2. 如果上传的文件表中没有(用户名FK),那么用户表如何链接到上传的文件? 3. File_cmets 会链接到用户表和上传的文件表吗?
    • 对于文件 cmets,您建议删除 (Reply_to_comment FK) 还是需要在此处触发对文件 cmets 的回复?
    • 1.即便如此,了解设计中的问题有助于找到限制风险的方法。 2. 抱歉,我修正了我的建议,包括Username FK。 3. 是的,您想记录评论的人以及他们评论的文件。 4. 如果您对 cme​​ts 的平面列表(而不是层次结构)感到满意,则可以将其删除。
    猜你喜欢
    • 1970-01-01
    • 2019-10-18
    • 2019-10-18
    • 2020-11-09
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多