【问题标题】:UML of DataBase数据库的UML
【发布时间】:2021-04-15 10:29:41
【问题描述】:

我将创建一个网络应用程序,用户可以在其中对书籍进行评分、将一章书籍添加到他们的购物车、购买然后下载。 Here is my uml of dbbookchapter 具有“一对多”的关系,但我从书籍 ID b_id 和章节 ID c_id 的外键创建了复合主键来识别书籍中的章节编号。 chapteruser 具有“多对多”的关系,因为一个chapter 可以被很多用户购买,一个user 可以购买很多书。我为 5 星评级系统在书籍和用户表之间创建了“多对多”关系。 book 单独也与 user 表有关系,我必须在 chapter 和评级 (user_m2m_book) 表之间进行选择。

我不确定我的架构是否为第 3 范式。 user_m2m_chapter 表中这样的复合主键会导致一些严重的问题吗?我的架构中还有其他错误吗?

我知道必须根据主题领域做出许多决定。但我是为自己做这件事并寻求建议。

【问题讨论】:

    标签: sql relational-database uml composite-primary-key


    【解决方案1】:

    不是专家,但我认为与其将章节链接到用户,不如通过“多对多”关系在用户和书籍之间建立关系。并且,还创建了书籍和章节相同的“多对多”关系。这样用户和书就会有关系,并且在 JOIN 的帮助下,您也可以通过章节表中的 BookId 获取章节。 注意:最好创建一个表来存储用户和图书信息,其中同一用户将拥有许多图书 ID,反之亦然。

    【讨论】:

    • 感谢您的回答!如果我在书和章节之间创建“多对多”关系,那么我将如何识别书中的章节顺序。章节而不是名称有它们的 ID,我想在网络上显示它们,如下所示:BookName: Chapter-1 [add to cart] [buy], Chapter-2 [add to cart] [buy] .或者我什么都没得到。
    • @HeroHamada,书与章节之间的一对多关系怎么样。一本书会有多个章节。因此,您可以创建 bookChapter 表或使用重复的外键(bookId)存储在章节表中
    • 章节主键需要加上书的外键吗?
    • @HeroHamada,是的,您这样做了,但作为专栏 bookId 而不是 PK。 PK 将是 ChapterId
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多