0% found this document useful (0 votes)
95 views10 pages

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
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
95 views10 pages

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
We take content rights seriously. If you suspect this is your content, claim it here.
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