나는이 문제에 큰 뇌의 방구를 가지고있다. 나는 누군가 이것을 보면서 이것을 어떻게하는지에 대한 단서를 줄 수 있기를 바란다.Mysql 많은 테이블과 쿼리
나는 users, book_copies, library locations, book 등 4 개의 테이블을 가지고 있습니다.
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));
나는 내가 뭘하고 싶은 것은 모든 추적 복사되는 많은 많은 테이블
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));
를 추가로 book_copies 및 위치, bookcopies 사용자, 책과 책의 사본 사이에 많은 많은 관계를 가지고 책을 읽고, 어떤 위치에 있는지, 그리고 어떤 사용자가 그것을 체크 아웃했는지, 그리고 어떤 날짜를 말합니까?
내가 해리 포터의 두 사본이 있다는 것을 돌아 내가 쿼리를 만들 것입니다 방법
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')
같은 것을 추가 12 월 18 일에 체크 아웃 얀 11 때문에, 건강 과학 공공 도서관에있는 ?
테이블을 여러 개의 테이블로 설정하는 것이 맞습니까? 내가해야 할 또 다른 방법이 있니?
주요 질문 외에도 스키마 디자인이 그렇게 나쁘지 않다고 생각합니다. 'book_copies' 데이터를 다르게 저장하고 복사본 당 하나의 항목을 저장하는 것이 좋습니다. 테이블은 (id, book_id, copy_id) 또는 (id, book_id)와 같을 것입니다. –
James가 말했던 것 외에도 날짜를 'DATE'유형으로 저장하는 것이 좋습니다. 많은 레코드를 가져 오면 테이블이 훨씬 작아지고 인덱싱이 훨씬 효율적입니다. –
'book_copies_locations'도 문제가 있습니다. 이 설정으로 서적이 여러 위치에있을 수 있습니다. 해당 테이블에 UNIQUE (bookcopid) 제약 조건을 추가해야합니다. –