0% found this document useful (0 votes)
27 views

Library Database

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
27 views

Library Database

Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 20

LIBRARY DATABASE

Consider the following schema for Library Database:


• BOOK(Book_id, Title, Publisher_Name, Pub_Year)
• BOOK_AUTHORS(Book_id, Author_Name)
• PUBLISHER(Name, Address, Phone)
• BOOK_COPIES(Book_id, Branch_id, No-
of_Copies)
• BOOK_LENDING(Book_id, Branch_id, Card_No,
Date_Out, Due_Date)
• LIBRARY_BRANCH(Branch_id, Branch_Name,
Address)
create table publisher
(
name varchar(10),
address varchar(10),
phone int,
primary key(name)
);
create table book
(
book_id varchar(5),
title varchar(20),
publisher_name varchar(10),
publisher_year int,
primary key(book_id),
foreign key(publisher_name) references publisher(name)
on delete cascade
);
create table book_authors
(
book_id varchar(5),
author_name varchar(15),
primary key(book_id),
foreign key(book_id) references book(book_id)
on delete cascade
);
create table library_branch
(
branch_id varchar(5),
branch_name varchar(10),
address varchar(15),
primary key(branch_id),
);
create table book_copies
(
book_id varchar(5),
branch_id varchar(5),
no_of_copies int,
primary key(book_id,branch_id),
foreign key(book_id) references book(book_id) on delete
cascade,
foreign key(branch_id) references
library_branch(branch_id) on delete cascade
);
create table book_lending
(
book_id varchar(5),
branch_id varchar(5),
card_no varchar(5),
date_out date,
due_date date,
primary key(book_id,branch_id,card_no),
foreign key(book_id) references book(book_id) on delete
cascade,
foreign key(branch_id) references
library_branch(branch_id) on delete cascade;
);
• 1. Retrieve details of all books in the library –
id, title, name of publisher, authors, number of
copies in each branch, etc.

select b.book_id, b.title, b.publisher_name,


ba.author_name, bc.branch_id, bc.no_of_copies
from book b,book_authors ba, book_copies bc
where b.book_id = bc.book_id and b.book_id =
ba.book_id;
2. Get the particulars of borrowers who have
borrowed more than 3 books, but from Jan 2017
to Jun 2017.
select distinct card_no
from book_lending b
where (date_out between '01-jan-2017' and '30-
jun-2017')
group by card_no
having count(*)>3;
3. Delete a book in BOOK table. Update the
contents of other tables to reflect this data
manipulation operation.
• delete from book where book_id='112';

4.Partition the BOOK table based on year of


publication. Demonstrate its working with a
simple query.
CREATE TABLE book1(book_id varchar(5),
title varchar(10),
publisher_name varchar(10),
publisher_year int,
PRIMARY KEY(book_id,publisher_year))
PARTITION BY RANGE (publisher_year)
(PARTITION p1 VALUES LESS THAN (2002),
PARTITION p2 VALUES LESS THAN (2010),
PARTITION p3 VALUES LESS THAN (MAXVALUE));
SELECT * FROM BOOK1 PARTITION(P1);
SELECT * FROM BOOK1 PARTITION(P2);
SELECT * FROM BOOK1 PARTITION(P3);
5. Create a view of all books and its number of
copies that are currently available in the Library.

create view available as


(
select book_id,sum(no_of_copies) -
(select count(card_no) from book_lending
where b.book_id = book_id) as avail_copies
from book_copies b group by book_id
);

You might also like