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

Part b Pgm 7_DBMS_Lab_Library Database

The document outlines a schema for a Library Database, detailing tables for books, authors, publishers, and lending records. It includes SQL queries for retrieving book details, borrower information, deleting books, partitioning tables, and creating views. Additionally, it provides create and insert scripts for populating the database with sample data.

Uploaded by

Shashank S
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
1 views

Part b Pgm 7_DBMS_Lab_Library Database

The document outlines a schema for a Library Database, detailing tables for books, authors, publishers, and lending records. It includes SQL queries for retrieving book details, borrower information, deleting books, partitioning tables, and creating views. Additionally, it provides create and insert scripts for populating the database with sample data.

Uploaded by

Shashank S
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

PART-B-DBMS LAB(22ISL42)

Program 7: Schema Diagram:

Problem Statement:
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, Programme_id,
No-of_Copies)
BOOK_LENDING(Book_id, Programme_id, Card_No, Date_Out, Due_Date)
LIBRARY_PROGRAMME(Programme_id, Programme_Name, Address)
Write SQL queries to
1. Retrieve details of all books in the library – id, title, name of publisher, authors, number of copies
in each Programme, 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.

Library-Create Table Scripts


--Create Table PUBLISHER with Primary Key as NAME
CREATE TABLE PUBLISHER
(NAME VARCHAR(20) PRIMARY KEY,
PHONE INTEGER,
ADDRESS VARCHAR(20));
DESC PUBLISHER;

--Create Table BOOK with Primary Key as BOOK_ID and Foreign Key PUB_NAME referring the PUBLISHER
table
CREATE TABLE BOOK
(BOOK_ID INTEGER PRIMARY KEY,
TITLE VARCHAR(20),
PUB_YEAR VARCHAR(20),
PUB_NAME VARCHAR(20),
FOREIGN KEY (PUB_NAME) REFERENCES PUBLISHER(NAME) ON DELETE CASCADE);
DESC BOOK;

--Create Table BOOK_AUTHORS with Primary Key as BOOK_ID and AUTHOR_NAME and Foreign Key
BOOK_ID referring the BOOK table
CREATE TABLE BOOK_AUTHORS
(AUTHOR_NAME VARCHAR(20),
BOOK_ID INTEGER,
FOREIGN KEY (BOOK_ID) REFERENCES BOOK(BOOK_ID) ON DELETE CASCADE,
PRIMARY KEY(BOOK_ID, AUTHOR_NAME));
DESC BOOK_AUTHORS;

--Create Table LIBRARY_PROGRAMME with Primary Key as PROGRAMME_ID


CREATE TABLE LIBRARY_PROGRAMME
(PROGRAMME_ID INTEGER PRIMARY KEY,
PROGRAMME_NAME VARCHAR(50),
ADDRESS VARCHAR(50));
DESC LIBRARY_PROGRAMME;

--Create Table as BOOK_COPIES with Primary Key as BOOK_ID and PROGRAMME_ID and Foreign Key
BOOK_ID and PROGRAMME_ID referring the BOOK and LIBRARY_PROGRAMME tables respectively
CREATE TABLE BOOK_COPIES (NO_OF_COPIES INTEGER,
BOOK_ID INTEGER,
PROGRAMME_ID INTEGER,
FOREIGN KEY (BOOK_ID) REFERENCES BOOK(BOOK_ID) ON DELETE CASCADE,
FOREIGN KEY(PROGRAMME_ID) REFERENCES LIBRARY_PROGRAMME(PROGRAMME_ID) ON DELETE
CASCADE,
PRIMARY KEY (BOOK_ID,PROGRAMME_ID));
DESC BOOK_COPIES;
-- Create Table CARD with Primary Key as CARD_NO
CREATE TABLE CARD (CARD_NO INTEGER PRIMARY KEY);

DESC CARD;

-- Create Table BOOK_LENDING with Primary Key as BOOK_ID, PROGRAMME_ID and CARD_NO and
Foreign key as BOOK_ID, PROGRAMME_ID and CARD_NO referring the BOOK,
LIBRARY_PROGRAMME and CARD tables respectively
CREATE TABLE BOOK_LENDING (BOOK_ID INTEGER, PROGRAMME_ID INTEGER,
CARD_NO INTEGER,
DATE_OUT DATE, DUE_DATE DATE,
FOREIGN KEY (BOOK_ID) REFERENCES BOOK(BOOK_ID) ON DELETE CASCADE,
FOREIGN KEY (PROGRAMME_ID) REFERENCES LIBRARY_PROGRAMME(PROGRAMME_ID) ON
DELETE CASCADE, FOREIGN KEY (CARD_NO) REFERENCES CARD(CARD_NO) ON DELETE CASCADE,
PRIMARY KEY (BOOK_ID,PROGRAMME_ID,CARD_NO));
DESC BOOK_LENDING;

Library-Insert scripts
--Inserting records into PUBLISHER table
INSERT INTO PUBLISHER VALUES('SAPNA',912121212,'BANGALORE');
INSERT INTO PUBLISHER VALUES('PENGUIN',921212121,'NEW YORK');
INSERT INTO PUBLISHER VALUES('PEARSON',913131313,'HYDERABAD');
INSERT INTO PUBLISHER VALUES('OZONE',931313131,'CHENNAI');
INSERT INTO PUBLISHER VALUES('PLANETZ',914141414,'BANGALORE');
SELECT * FROM PUBLISHER;

--Inserting records into BOOK table


INSERT INTO BOOK VALUES(1,'BASICS OF EXCEL','JAN-2017','SAPNA');
INSERT INTO BOOK VALUES(2,'PROGRAMMING MINDSET','JUN-2018','PLANETZ');
INSERT INTO BOOK VALUES(3,'BASICS OF SQL','SEP-2016','PEARSON');
INSERT INTO BOOK VALUES(4,'DBMS FOR BEGINNERS','SEP-2015','PLANETZ');
INSERT INTO BOOK VALUES(5,'WEB SERVICES','MAY-2017','OZONE');
SELECT * FROM BOOK;

--Inserting records into BOOK_AUTHORS table


INSERT INTO BOOK_AUTHORS VALUES('SRI DEVI',1);
INSERT INTO BOOK_AUTHORS VALUES('DEEPAK',2);
INSERT INTO BOOK_AUTHORS VALUES('PRAMOD',3);
INSERT INTO BOOK_AUTHORS VALUES('SWATHI',4);
INSERT INTO BOOK_AUTHORS VALUES('PRATHIMA',5);
SELECT * FROM BOOK_AUTHORS;

--Inserting records into LIBRARY_PROGRAMME table


INSERT INTO LIBRARY_PROGRAMME VALUES(100,'HSR LAYOUT','BANGALORE');
INSERT INTO LIBRARY_PROGRAMME VALUES(101,'KENGERI','BANGALORE');
INSERT INTO LIBRARY_PROGRAMME VALUES(102,'BANASHANKARI','BANGALORE');
INSERT INTO LIBRARY_PROGRAMME VALUES(103,'SHANKARA NAGAR','MANGALORE');
INSERT INTO LIBRARY_PROGRAMME VALUES(104,'MANIPAL','UDUPI');
SELECT * FROM LIBRARY_PROGRAMME;

--Inserting records into BOOK_COPIES table


INSERT INTO BOOK_COPIES VALUES(10,1,100);
INSERT INTO BOOK_COPIES VALUES(16,1,101);
INSERT INTO BOOK_COPIES VALUES(20,2,102); INSERT
INTO BOOK_COPIES VALUES(6,2,103); INSERT INTO
BOOK_COPIES VALUES(4,3,104); INSERT INTO
BOOK_COPIES VALUES(7,5,100); INSERT INTO
BOOK_COPIES VALUES(3,4,101); SELECT * FROM
BOOK_COPIES;

--Inserting records into BOOK_COPIES table


INSERT INTO CARD VALUES(500);
INSERT INTO CARD VALUES(501);
INSERT INTO CARD VALUES(502);
INSERT INTO CARD VALUES(503);
INSERT INTO CARD VALUES(504);
SELECT * FROM CARD;

--Inserting records into BOOK_LENDING table


INSERT INTO BOOK_LENDING VALUES(1, 100, 501, '01-Jan-2017','31-Jan-2017');
INSERT INTO BOOK_LENDING VALUES(3, 104, 501, '11-Jan-2017','01-Mar-2017');
INSERT INTO BOOK_LENDING VALUES(2, 103, 501, '21-Feb-2017','21-Apr-2017');
INSERT INTO BOOK_LENDING VALUES(2, 103, 501, '21-Feb-2017','21-Apr-2017');
INSERT INTO BOOK_LENDING VALUES(4, 101, 501, '11-Mar-2017','11-Jun-2017');
SELECT * FROM BOOK_LENDING;

Library-Queries
--Retrieve details of all books in the library – id, title, name of publisher, authors,
--number of copies in each Programme, etc.
SELECT B.BOOK_ID, B.TITLE, B.PUB_NAME, A.AUTHOR_NAME,C.NO_OF_COPIES,L.PROGRAMME_ID
FROM BOOK B, BOOK_AUTHORS A, BOOK_COPIES C, LIBRARY_PROGRAMME L
WHERE B.BOOK_ID=A.BOOK_ID
AND B.BOOK_ID=C.BOOK_ID
AND L.PROGRAMME_ID=C.PROGRAMME_ID;

--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-Jun-2017'
GROUP BY CARD_NO
HAVING COUNT(*)>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=3;
SELECT * FROM BOOK;
SELECT * FROM BOOK_AUTHORS;

--Partition the BOOK table based on year of publication. Demonstrate its working
--with a simple query.
CREATE VIEW V_PUBLICATION AS SELECT PUB_YEAR FROM BOOK;
SELECT * FROM V_PUBLICATION;

--Create a view of all books and its number of copies that are currently available
--in the Library.
CREATE VIEW V_BOOKS AS SELECT B.BOOK_ID,
B.TITLE, C.NO_OF_COPIES FROM BOOK B, BOOK_COPIES C, LIBRARY_PROGRAMME L WHERE
B.BOOK_ID=C.BOOK_ID AND C.PROGRAMME_ID=L.PROGRAMME_ID;
SELECT * FROM V_BOOKS;

You might also like