为不同的用户创建多本书籍的书架关系

时间:2014-05-19 13:38:55

标签: database database-design schema relational-database database-schema

我有以下关系:

Books(book_id, title, author)

Members(member_id, name, username, password)

Librarian(librarian_id, name, username, password)

我想为以下语句创建关系和模式:

  • 从现有图书(会员和图书馆员)创建 迷你书架
  • 会员还可以使用由图书馆员创建的 shelf

2 个答案:

答案 0 :(得分:1)

如果我正确地理解了这个问题,我会选择这样的事情:

合并成员表中的图书馆员并添加IsLibrarian列以区分这两类用户

Members(member_id, name, username, password, islibrarian)

Shelf(shelf_id, caption, dateopened, owner, etc...)
ShelfDetails(id, shelf_id, bookid)

货架的所有者在会员表(外键)中,可以是普通会员或图书管理员。

用户可以使用哪些书架,然后由您的应用程序决定。您可以轻松选择用户创建的书架和图书馆员使用此架构创建的书架。

P.S。 在提出问题以表明你的努力解决这个问题时,这也很好,就像显示你的想法一样。

答案 1 :(得分:0)

看起来你需要类似的东西(为了简洁省略了非关键字段):

enter image description here

"创建货架"的概念之间存在差异。和#34;使用货架":

  • 前者是1:N关系,由外键SHELF.USER_ID表示。
  • 后者是M:N关系,由联结表USER_SHELF表示。

USER - MEMBER - LIBRARIAN层次结构 1 可以由单个表(可能带有某种" type flag")或使用{{3}之一表示}。


1 ER术语是"类别",又名。子类化,子类型化,继承或泛化层次结构。