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

Library DB

This document describes the schema for a library database including tables for books, authors, publishers, book copies in branches, lending records, branches, and member cards. It also provides sample data and queries including: 1. A query to retrieve book details along with associated data from other tables. 2. A query to find members who borrowed more than 3 books between January and June 2017. 3. A demonstration of deleting a book and updating associated records. 4. A demonstration of partitioning the book table by publication year. 5. A view to show available book copies.

Uploaded by

Pruthvi Raj bl
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
71 views

Library DB

This document describes the schema for a library database including tables for books, authors, publishers, book copies in branches, lending records, branches, and member cards. It also provides sample data and queries including: 1. A query to retrieve book details along with associated data from other tables. 2. A query to find members who borrowed more than 3 books between January and June 2017. 3. A demonstration of deleting a book and updating associated records. 4. A demonstration of partitioning the book table by publication year. 5. A view to show available book copies.

Uploaded by

Pruthvi Raj bl
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 10

1.

Consider the following schema for a 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)
CARD(Card_No)

Write SQL queries to


1. Retrieve details of all books in the library – id, title, name of publisher, authors,
number of copies in each branch, etc.
2. Get the particulars of borrowers who have borrowed more than 3 books, but from
Jan 2017 to Jun 2017
3. Delete a book in BOOK table. Update the contents of other tables to reflect this data
manipulation operation.
4. Partition the BOOK table based on year of publication. Demonstrate its working
with a simple query.
5. Create a view of all books and its number of copies that are currently available in
the Library.

Entity-Relationship Diagram

Author_Name
Book_id Title

Pub_Year M N

Book written-by Book_Authors

Has
Published-by
N No_of_copies
Branch_id
Publisher_Name

M M N
1 Book_Copies In Library_Branch
Branch_Name

Address
Publisher
N Address
Date_out
Book_Lending
Phone
Card_No
Due_date

N
Card
Book

Book_i Titl Pub_Yea Publisher_Nam


d e r e

Book_Authors

Book_i Author_nam
d e

Publisher

Nam Phone_n Addres


e o s

Book_Copies

Book_i Branch_i No_of_Copie


d d s

Book_Lending

Book_i Branch_i Card_n Date_ou Due_dat


d d o t e

Library_Branch

Branch_i Addres Branch_nam


d s e

Table Creation

CREATE TABLE PUBLISHER


(
NAME VARCHAR (20),
PHONE INT,
ADDRESS VARCHAR (20),
PRIMARY KEY(NAME)
);
INSERT INTO PUBLISHER VALUES (‘MCGRAW-HILL’, 9989076587,
‘BANGALORE’);
INSERT INTO PUBLISHER VALUES (‘PEARSON’, 9889076565, ‘NEWDELHI’);
INSERT INTO PUBLISHER VALUES (‘RANDOM HOUSE’, 7455679345,
‘HYDRABAD’);
INSERT INTO PUBLISHER VALUES (‘HACHETTE LIVRE’, 8970862340, ‘CHENAI’);
INSERT INTO PUBLISHER VALUES (‘GRUPO PLANETA’, 7756120238,
‘BANGALORE’);

---------------------------------------------------------------------------------------------------------
CREATE TABLE BOOK
(
BOOK_ID INT,
TITLE VARCHAR (20),
PUB_YEAR VARCHAR(20),
PRIMARY KEY(BOOK_ID),
PUBLISHER_NAME VARCHAR (20) REFERENCES PUBLISHER (NAME)
);

INSERT INTO BOOK VALUES (1,’DBMS’,’JAN-2017’, ‘MCGRAW-HILL’);


INSERT INTO BOOK VALUES (2,’ADBMS’,’JUN-2016’, ‘MCGRAW-HILL’);
INSERT INTO BOOK VALUES (3,’CN’,’SEP-2016’, ‘PEARSON’);
INSERT INTO BOOK VALUES (4,’CG’,’SEP-2015’, ‘GRUPO PLANETA’);
INSERT INTO BOOK VALUES (5,’OS’,’MAY-2016’, ‘PEARSON’);

----------------------------------------------------------

-------------------------------------------------

CREATE TABLE BOOK_AUTHORS


(
AUTHOR_NAME VARCHAR (20),
BOOK_ID INT REFERENCES BOOK (BOOK_ID) ON DELETE CASCADE ,
PRIMARY KEY (BOOK_ID, AUTHOR_NAME)
);

INSERT INTO BOOK_AUTHORS VALUES (’NAVATHE’, 1);


INSERT INTO BOOK_AUTHORS VALUES (’NAVATHE’, 2);
INSERT INTO BOOK_AUTHORS VALUES (’TANENBAUM’, 3);
INSERT INTO BOOK_AUTHORS VALUES (’EDWARD ANGEL’, 4);
INSERT INTO BOOK_AUTHORS VALUES (’GALVIN’, 5);

----------------------------------------------------------------------------------------------------------------
CREATE TABLE LIBRARY_BRANCH
(
BRANCH_ID INT,
BRANCH_NAME VARCHAR (20),
ADDRESS VARCHAR (30),
PRIMARY KEY(BRANCH_ID)
);

INSERT INTO LIBRARY_BRANCH VALUES (10,’RR NAGAR’,’BANGALORE’);


INSERT INTO LIBRARY_BRANCH VALUES (11,’VVCE’,’MYSORE’);
INSERT INTO LIBRARY_BRANCH VALUES (12,’RAJAJI NAGAR’, ’BANGALORE’);
INSERT INTO LIBRARY_BRANCH VALUES (13,’NITTE’,’MANGALORE’);
INSERT INTO LIBRARY_BRANCH VALUES (14,’MANIPAL’,’UDUPI’);

-------------------------------------------------------------------------------------------------------------

CREATE TABLE BOOK_COPIES


(
NO_OF_COPIES INT,
BOOK_ID INT REFERENCES BOOK (BOOK_ID) ON DELETE CASCADE ,
BRANCH_ID INT REFERENCES LIBRARY_BRANCH (BRANCH_ID),
PRIMARY KEY (BOOK_ID, BRANCH_ID)
);
INSERT INTO BOOK_COPIES VALUES (10, 1, 10);
INSERT INTO BOOK_COPIES VALUES (5, 1, 11);
INSERT INTO BOOK_COPIES VALUES (2, 2, 12);
INSERT INTO BOOK_COPIES VALUES (5, 2, 13);
INSERT INTO BOOK_COPIES VALUES (7, 3, 14);
INSERT INTO BOOK_COPIES VALUES (1, 5, 10);
INSERT INTO BOOK_COPIES VALUES (3, 4, 11);

-----------------------------------------------------------------------------------------------------------

CREATE TABLE CARD


(
CARD_NO INT,
PRIMARY KEY(CARD_NO)
);

INSERT INTO CARD VALUES (100);


INSERT INTO CARD VALUES (101);
INSERT INTO CARD VALUES (102);
INSERT INTO CARD VALUES (103);
INSERT INTO CARD VALUES (104);

-------------------------------------------------------------------------------------------------------------
CREATE TABLE BOOK_LENDING
(
DATE_OUT DATE,
DUE_DATE DATE,
BOOK_ID INT REFERENCES BOOK (BOOK_ID) ON DELETE CASCADE,
BRANCH_ID INT REFERENCES LIBRARY_BRANCH (BRANCH_ID) ,
CARD_NO INT REFERENCES CARD (CARD_NO),
PRIMARY KEY (BOOK_ID, BRANCH_ID, CARD_NO)
);

INSERT INTO BOOK_LENDING VALUES (’01-JAN-17’,’01-JUN-17’, 1, 10, 101);


INSERT INTO BOOK_LENDING VALUES (’11-JAN-17’,’11-MAR-17’, 3, 14, 101);
INSERT INTO BOOK_LENDING VALUES (’21-FEB-17’,’21-APR-17’, 2, 13, 101);
INSERT INTO BOOK_LENDING VALUES (’15-MAR-17’,’15-JUL-17’, 4, 11, 101);
INSERT INTO BOOK_LENDING VALUES (‘12-APR-17’,’12-MAY-17’, 1, 11, 104);

SELECT * FROM PUBLISHER;


SELECT *FROM BOOK;
SELECT * FROM BOOK_AUTHORS;
SELECT * FROM LIBRARY_BRANCH;
SELECT * FROM BOOK_COPIES;
SELECT * FROM CARD;
SELECT * FROM BOOK_LENDING;

Queries:
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, A.AUTHOR_NAME,


C.NO_OF_COPIES, L.BRANCH_ID,L.BRANCH_NAME
FROM BOOK B, BOOK_AUTHORS A, BOOK_COPIES C, LIBRARY_BRANCH
L
WHERE B.BOOK_ID=A.BOOK_ID
AND B.BOOK_ID=C.BOOK_ID
AND L.BRANCH_ID=C.BRANCH_ID;

2. Get the particulars of borrowers who have borrowed more than 3 books, but
from Jan 2017 to Jun 2017.

SELECT CARD_NO
FROM BOOK_LENDING
WHERE DATE_OUT BETWEEN ’01-JAN-2017’ AND ’01-JUL-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.

SELECT * FROM BOOK;


SELECT * FROM BOOK_AUTHORS;
SELECT * FROM BOOK_COPIES;
SELECT * FROM BOOK_LENDING;
DELETE FROM BOOK WHERE BOOK_ID=3;

SELECT * FROM BOOK;


SELECT * FROM BOOK_AUTHORS;
SELECT * FROM BOOK_COPIES;
SELECT * FROM BOOK_LENDING;

4. Partition the BOOK table based on year of publication. Demonstrate its working
with a simple query.

DROP VIEW V_PUBLICATION;

CREATE VIEW V_PUBLICATION AS


SELECT *
FROM BOOK WHERE PUB_YEAR=’&PUBYEAR’;

SELECT * FROM V_PUBLICATION;

5. Create a view of all books and its number of copies that are currently available in
the Library.

DROP VIEW V_BOOKS;

CREATE VIEW V_BOOKS AS


SELECT B.BOOK_ID, B.TITLE, C.NO_OF_COPIES
FROM BOOK B, BOOK_COPIES C, LIBRARY_BRANCH L
WHERE B.BOOK_ID=C.BOOK_ID
AND C. BRANCH_ID=L.BRANCH_ID;

SELECT * FROM V_BOOKS;

You might also like