我在这个问题上有一个主要的大脑放屁,我希望有人可以看看这个并提供一些关于如何做到这一点的线索。
我有 4 个表 - 用户、book_copies、图书馆位置、书籍。
Create table book
( id int not null auto incre,
name varchar(55),
primary key(id) );
Create table book_copies
( id int not null auto incre,
number of copies),
primary key(id) );
Create table location
( id int not null auto incre,
address varchar(55),
primary key(id) );
Create table users
( id int not null auto incre,
name varchar(55),
primary key(id) );
我在 book_copies 和位置、 bookcopies 和用户、 book 和 book 副本之间有很多关系,并添加了 many-many 表
Create book_copies_locations
( locationid int (11) not null,
bookcopyid int (11) not null,
primary key(locationid,bookecopyid) ,
foreign key (locationid) references locations.id,
foreign key (bookcopyid) references book_copies.id) );
Create table borrow
( userid int (11) not null,
bookcopyid int (11) not null,
checkoutdate varchar(55),
duedate varchar(55),
primary key(userid,bookecopyid) ,
foreign key (userid) references users.id,
foreign key (bookcopyid) references book_copies.id) );
Create table book_copies_books
( booksid int (11) not null,
bookcopyid int (11) not null,
checkoutdate varchar(55),
duedate varchar(55),
primary key(booksid,bookecopyid) ,
foreign key (booksid) references books.id,
foreign key (bookcopyid) references book_copies.id) );
我想做的是跟踪每本书的副本,并告诉它在什么位置?以及哪个用户检查了它?以及什么日期?
我添加了类似的东西
insert into borrow (userid,bookcopyid, checkoutdate, duedate) values( '1', '1', 'dec 18', 'jan 11')
insert into users (id,name) values( '1', 'bob')
insert into book_copies (id,number_of_copies) values( '2', '33')
insert into books (id,name) values( '1', 'harry potter')
insert into locations (id,address) values( '1', 'health science public library')
我将如何查询以返回有 2 份哈利波特的副本,于 12 月 18 日退房并于 1 月 11 日到期,并且位于健康科学公共图书馆?
我是否使用多对多表正确设置表?我应该这样做吗?