【发布时间】:2014-04-24 16:33:07
【问题描述】:
我需要帮助。我有 2 个表 Books 和 Authors
- 一本书可以有多个作者
- 一个作者可以写多本书
所以我设计了 Mapping/Junction 表来维护这种关系
我的要求 - 我想获取给定作者组合的图书 ID、姓名。 在下面的例子中说作者 A2 和 A3 写的书 'B3' (103)。所以我的输入将是 302 和 303(A2 和 A3 id),查询应该给我 103(书 id)
如果需要,请建议架构更改
这是在 SQL Server 2005 及更高版本中工作的示例代码
declare @tbl_Books TABLE (Book_ID INT, Book_Name VARCHAR(500))
declare @tbl_Authors TABLE (Author_ID INT, Author_Name VARCHAR(50))
declare @tbl_Mapping TABLE (Mapping_ID INT IDENTITY(1,1), Book_ID INT, Author_ID INT)
insert into @tbl_Books VALUES (101,'B1'),(102,'B2'),(103,'B3')
insert into @tbl_Authors VALUES (301,'A1'),(302,'A2'),(303,'A3')
insert into @tbl_Mapping VALUES (101,301),(101,302),(102,301),(102,302),(101,303),(103,302),(103,303)
select * from @tbl_Books
select * from @tbl_Authors
select * from @tbl_Mapping
Table : tbl_Books
==========
Book_ID Book_Name
101 B1
102 B2
103 B3
Table: tbl_Authors
===================
Author_ID Author_name
301 A1
302 A2
303 A3
Table:tbl_Mapping
==============
Mapping_ID Book_ID Author_ID
1 101 301
2 101 302
3 102 301
4 102 302
5 102 303
6 103 302
7 103 303
【问题讨论】:
-
您想了解什么?对于这类问题,这似乎是一个很好的设计。
-
我的要求 - 我想获取给定作者组合的图书 ID、姓名,如何通过使用此架构或需要更改架构设计来实现此目的?
标签: database