Database 为不同用户从多本书创建书架关系

Database 为不同用户从多本书创建书架关系,database,database-design,schema,relational-database,database-schema,Database,Database Design,Schema,Relational Database,Database Schema,我有以下关系: 书籍(书号、书名、作者) 成员(成员id、姓名、用户名、密码)和 图书管理员(图书管理员id、姓名、用户名、密码) 我想为以下语句创建关系和模式: 从现有书籍创建迷你书架(适用于会员和图书管理员) 会员还可以使用图书管理员创建的书架 如果我正确理解了这个问题,我会这样说: 合并成员表中的图书管理员并添加IsLibrarian列以区分这两种类型的用户 Members(member_id, name, username, password, islibrarian) Shelf(

我有以下关系:

书籍(书号、书名、作者)

成员(成员id、姓名、用户名、密码)

图书管理员(图书管理员id、姓名、用户名、密码)

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

  • 从现有书籍创建迷你书架(适用于会员和图书管理员)
  • 会员还可以使用图书管理员创建的书架

如果我正确理解了这个问题,我会这样说:

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

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

Shelf(shelf_id, caption, dateopened, owner, etc...)
ShelfDetails(id, shelf_id, bookid)
书架的所有者位于members表(外键)中,可以是普通成员,也可以是图书管理员

用户可以使用什么工具架取决于您的应用程序。您可以轻松地选择用户创建的书架和使用此模式的图书管理员创建的书架

附言。
当你提出问题来展示你在解决这个问题上所付出的努力时,比如展示你的想法,这也很好。

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

“创建货架”和“使用货架”的概念有区别:

  • 前者是1:N关系,由外键SHELF.USER_ID表示
  • 后者是一个M:N关系,由连接表用户_SHELF表示
用户-成员-库管理员hierarchy1可以由单个表(可能带有某种类型的“类型标志”)表示,也可以使用其中一个表来表示



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

那么,我是否应该将
shelf\u id
属性作为
Members(member\u id,name,username,shelf\u id,…)放入
表中以获得每个用户的shelf\u id
?谢谢如果您将
shelf_id
放入
Members
表中,那么一个成员只能有一个shelf(如果您希望这样做,这是可以的),如果您希望成员分配多个shelf,那么Branko Dimitrijevic的回答显示了如何使用USER_shelf表。此表包含将哪个成员分配给哪个工具架的信息,每个工具架可由0、1或多个成员使用。