【问题标题】:How to implement this rather complex concept/relation in database?如何在数据库中实现这个相当复杂的概念/关系?
【发布时间】:2013-09-21 14:05:05
【问题描述】:

我正在创建一个 Web 应用程序,但在试图弄清楚如何布局数据库表时遇到了问题。

我不是数据库专家,但问题是:

例如,我希望应用程序有两个接口。第一个,创建一本新的。第二个,你在那本书(或另一本书)中写了一个新的entry / page

我想到了这三个表: 书籍,作者,条目。

书籍

  • book_id
  • author_id
  • 标题

参赛作品

  • 身份证
  • author_id
  • 文字
  • 日期时间
  • book_id

作者

  • author_id
  • 全名
  • 用户名

当然,表格并不完整。但是我迷失了如何很好地建立表之间的关系。我希望作者能够创建一本新书(这是通过在该书中创建第一个条目/页面,因此 Entries 表有一个新记录,以及 Books.) 或者,向书中添加条目/页面。

另外,我不确定 Books 表是否应该有一个 entry_id 列来跟踪/计算该书中的条目/页数。

我知道这听起来很模糊。但我不知道谷歌到底是什么或具体问什么。如果 SQL 中有一个概念或一本适合 Web 程序员(我擅长 PHP)的好书,专注于在数据库中构建具有相当复杂关系的 Web 应用程序,您可以告诉我,将不胜感激。

谢谢。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    我认为这些关系并不复杂:作者可以创建一本书,而一本书可以包含条目。您的架构允许任何人在他们未创建的书中创建条目 - 如果您不希望这样做,则从“条目”表中删除“作者 ID”字段。

    但你真正的问题是什么?

    【讨论】:

    • 谢谢。但是,另一个问题:如果我想添加一个相对于entryid 相对于book 的列,我该怎么做?会搞砸一切吗?例如,“这是 id y 书中的第 x 个条目”。
    • @MMag:“这是第 x 个条目”意味着存在某种形式的排序顺序。通常排序顺序不存储在表中,而是在查询“select id from entries where book_id = y order by datetime”或“select id from entries order by id”查询中动态发生。如果你想要一个特定的条目(例如第五个条目),那么你会使用某种形式的“top”或“limit”子句。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2022-11-02
    • 1970-01-01
    相关资源
    最近更新 更多