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

DBMS_Program 3-5

The document outlines the design of an ER-diagram and relational model for a cricket tournament scenario, detailing entities such as teams, players, stadiums, and matches, along with their attributes and relationships. It includes SQL queries to retrieve specific information, such as the youngest player, stadium with the most matches, and teams with maximum wins. Additionally, it describes a similar structure for an election scenario, including constituencies, voters, candidates, and parties, along with queries and stored procedures for managing voter eligibility and constituency information.

Uploaded by

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

DBMS_Program 3-5

The document outlines the design of an ER-diagram and relational model for a cricket tournament scenario, detailing entities such as teams, players, stadiums, and matches, along with their attributes and relationships. It includes SQL queries to retrieve specific information, such as the youngest player, stadium with the most matches, and teams with maximum wins. Additionally, it describes a similar structure for an election scenario, including constituencies, voters, candidates, and parties, along with queries and stored procedures for managing voter eligibility and constituency information.

Uploaded by

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

DBMS _ PROGRAM 3

Design an ER-diagram for the following scenario, Convert the same into a relational model
and then solve the following queries.

Consider a Cricket Tournament “ABC CUP” organized by an organization. In the


tournament there are many teams are contesting each having a Teamid,Team_Name,
City, a coach. Each team is uniquely identified by usingTeamid. A team can have many
Players and a captain. Each player is uniquely identified by Playerid, having a Name, and
multiple phone numbers,age. A player represents only one team. There are many
Stadiums to conduct matches. Each stadium is identified using Stadiumid, having a
stadium_name,Address ( involves city,area_name,pincode).A team can play many
matches. Each match played between the two teams in the scheduled date and time in
the predefined Stadium. Each match is identified uniquely by using Matchid. Each match
won by any of the one team that also wants to record in the database. For each match
man_of_the match award given to a player.

QUERIES:
1. Display the youngest player (in terms of age) Name, Team name , age in
which he belongs of the tournament.

2. List the details of the stadium where the maximum number of matches were
played.

3. List the details of the player who is not a captain but got the man_of _match
award at least in two matches.

4. Display the Team details who won the maximum matches.

5. Display the team name where all its won matches played in the same stadium.
SCHEMA :

TEAM
TID TNAME COACH CAPID CITY

PLAYER PID PNAME AGE TID

STADIUM SID SNAME PINCODE CITY AREA

MATCHES MID MDATE TIME TEAMID1 TEAMID2 WINNERID MOMID Stadiumid

PHONE_NO PID PHONE_NUMBER


✓ ER DIAGRAM:
TEAM

CREATE TABLE TEAM(TID VARCHAR(10) PRIMARY KEY,TNAME VARCHAR(20),CITY


VARCHAR(20),COACH VARCHAR(20), CAPID VARCHAR(20));
INSERT INTO TEAM VALUES('T10','INDIA','MUMBAI','CLARK','P10');
INSERT INTO TEAM VALUES('T20','BANG','GULF','MULLA','P20');
INSERT INTO TEAM VALUES('T30','AFRICA','GERF','SMITH','P30');
INSERT INTO TEAM VALUES('T40','AUSTRALIA','DENMARK','SAMMY','P40');
SELECT *FROM TEAM;

PLAYER

CREATE TABLE PLAYER(PID VARCHAR(20) PRIMARY KEY,PNAME VARCHAR(20),AGE


NUMBER(2),TID VARCHAR(20) REFERENCES TEAM(TID));
INSERT INTO PLAYER VALUES('P10','KHOLI',25,'T10');
INSERT INTO PLAYER VALUES('P20','YUVI',29,'T10');
INSERT INTO PLAYER VALUES('P30','SMARK',29,'T20');
INSERT INTO PLAYER VALUES('P40','SMITH',25,'T20');
INSERT INTO PLAYER VALUES('P50','SAMM',25,'T30');
INSERT INTO PLAYER VALUES('P60','DHONI',24,'T30');
INSERT INTO PLAYER VALUES('P70','VALKY',24,'T40');
INSERT INTO PLAYER VALUES('P80','FUGU',28,'T40');
SELECT *FROM PLAYER;

STADIUM

CREATE TABLE STADIUM(SID VARCHAR(20) PRIMARY KEY,SNAME VARCHAR(20),PINCODE


NUMBER(6),CITY VARCHAR(20),AREA VARCHAR(20));
INSERT INTO STADIUM VALUES('S10','CHINNASWAMI',560064,'BENGALURU','MGROAD');
INSERT INTO STADIUM VALUES('S20','AFRICAEAN',508723,'DENMARK','OCEAN');
SELECT *FROM STADIUM;
MATCH

CREATE TABLE MATCH(MID VARCHAR(10) PRIMARY KEY,MDATE VARCHAR(10),TIME


VARCHAR(10),STADIUMID VARCHAR(10) REFERENCES STADIUM(SID),TEAMID1
VARCHAR(10) REFERENCES TEAM(TID),TEAMID2 VARCHAR(10) REFERENCES
TEAM(TID),WINNERID VARCHAR(10)REFERENCES TEAM(TID),MOMID VARCHAR(10)
REFERENCES PLAYER(PID));
INSERT INTO MATCH VALUES('M10','14-12-2016','3AM','S10','T10','T20','T10','P10');
INSERT INTO MATCH VALUES('M20','16-12-2016','4PM','S20','T30','T40','T30','P10');
INSERT INTO MATCH VALUES('M30','17-03-2016','3PM','S10','T10','T30','T10','P20');
INSERT INTO MATCH VALUES('M40','18-02-2016','4PM','S20','T10','T40','T10','P20');
INSERT INTO MATCH VALUES('M50','19-01-2016','6PM','S10','T10','T20','T10','P20');
INSERT INTO MATCH VALUES('M90','19-12-2016','6PM','S20','T30','T20','T30','P50');
INSERT INTO MATCH VALUES('M80','19-12-2016','6PM','S20','T30','T20','T30','P50');
SELECT *FROM MATCH;
PLAYERNO

CREATE TABLE PLAYERNO(PID VARCHAR(10) REFERENCES PLAYER(PID),PHONE_NUMBER


NUMBER(10));
INSERT INTO PLAYERNO VALUES('P10',9012345612);
INSERT INTO PLAYERNO VALUES('P20',9012345615);
INSERT INTO PLAYERNO VALUES('P30',9012345614);
INSERT INTO PLAYERNO VALUES('P10',9012345613);
SELECT *FROM PLAYERNO;

QUERY 1:) DISPLAY THE YOUNGEST PLAYER (IN TERMS OF AGE) NAME, TEAM NAME ,
AGE IN WHICH HE BELONGS OF THE TOURNAMENT.
SQL>
SELECT P.PNAME,T.TNAME,P.AGE FROM TEAM T,PLAYER P WHERE T.TID=P.TID AND AGE
IN (SELECT MIN(AGE) FROM PLAYER);
--------------------------------------------------------------------------------

QUERY 2: LIST THE DETAILS OF THE STADIUM WHERE THE MAXIMUM NUMBER OF
MATCHES WERE PLAYED.
SQL>
SELECT * FROM STADIUM WHERE SID IN(SELECT STADIUMID FROM MATCH GROUP BY
STADIUMID HAVING COUNT(STADIUMID)=(SELECT MAX(COUNT(STADIUMID))FROM
MATCH GROUP BY STADIUMID));

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

QUERY 3: LIST THE DETAILS OF THE PLAYER WHO IS NOT A CAPTAIN BUT GOT THE
MAN_OF _MATCH AWARD AT LEAST IN TWO MATCHES.
SQL>
SELECT * FROM PLAYER WHERE PID IN(SELECT MOMID FROM MATCH GROUP BY MOMID
HAVING COUNT(MOMID) > 1 AND MOMID NOT IN(SELECT CAPID FROM TEAM));
--------------------------------------------------------------------------------
QUERY 4: DISPLAY THE TEAM DETAILS WHO WON THE MAXIMUM MATCHES.
SQL>
SELECT * FROM TEAM WHERE TID IN(SELECT WINNERID FROM MATCH GROUP BY
WINNERID HAVING COUNT(WINNERID)=(SELECT MAX(TOTAL) FROM (SELECT
COUNT(WINNERID) AS TOTAL FROM MATCH GROUP BY WINNERID)));

QUERY 5: DISPLAY THE TEAM NAME WHERE ALL ITS WON MATCHES PLAYED IN THE
SAME STADIUM.
SQL>
SELECT TNAME FROM TEAM WHERE TID IN(SELECT WINNERID FROM MATCH GROUP BY
WINNERID HAVING COUNT(DISTINCT STADIUMID)=1);

--------------------------------------------------------------------------------
DBMS _ PROGRAM 4

Design an ER-diagram for the following scenario, Convert the same into a relational
model, normalize Relations into a suitable Normal form and solve queries. A country
wants to conduct an election for the parliament. A country having many
constituencies. Each constituency is identified uniquely by Constituency_id, having the
Name, belongs to a state,Number_of_voters. A constituency can have many voters.
Each voter is uniquely identified by using Voter_id, having the Name,age,address
(involves Houseno,city,state,pincode). Each voter belongs to only one constituency.
There are many candidates contesting in the election. Each candidates are uniquely
identified by using candidate_id, having Name, phone_no, age, state. A candidate
belongs to only one party.There are many parties. Each party is uniquely identified by
using Party_id, having Party_Name,Party_symbol. A candidate can contest from many
constituencies under a same party. A party can have many candidates contesting from
different constituencies. No constituency having the candidates from the same party.
A constituency can have many contesting candidates belongs to different parties.Each
voter votes only one candidate of his/her constituencty

Queries:
1) List the details of the candidates who are contesting from more than one
constituencies which are belongs to different states.
2) Display the state name having maximum number of constituencies.
3) Create a stored procedure to insert the tuple into the voter table by checking
the voter age. If voter’s age is at least 18 years old, then insert the tuple into
the voter else display the “Not an eligible voter msg”.
4) Create a stored procedure to display the number_of_voters in the specified
constituency. Where the constituency name is passed as an argument to the
stored procedure.
5) Create a TRIGGER to UPDATE the count of “ number_of_voters” of the
respective constituency in “CONSTITUENCY” table , AFTER inserting a
tuple into the “VOTERS” table
✓ SCHEMA:

CONSTITUENCY Cid Name State No_of voters

VOTER Voter_id Name Age Address Cid

PARTY Party_id P_name P_Symbol

CANDIDATE Candidate_id Name Phone Age State Party_id

CONTEST Cid Candidate_id


✓ ER DIAGRAM:
PARTY

CREATE TABLE PARTY(PID VARCHAR(20) PRIMARY KEY, PNAME VARCHAR(20), PSYMBOL


VARCHAR(20));
INSERT INTO PARTY VALUES('P101','CONGRESS','HAND');
INSERT INTO PARTY VALUES('P202','BJP','LOTUS');
INSERT INTO PARTY VALUES('P303','JDS','FARMERS');
SELECT *FROM PARTY;

CANDIDATE

CREATE TABLE CANDIDATE(CDID VARCHAR(10) PRIMARY KEY ,NAME


VARCHAR(20),PHONE VARCHAR(20),AGE NUMBER(3),STATE VARCHAR(20), PID
VARCHAR(20) REFERENCES PARTY(PID));
INSERT INTO CANDIDATE VALUES('CDT1','ANIL','945218379',34,'KARNATAKA','P101');
INSERT INTO CANDIDATE VALUES('CDT2','BALA','8563007952',42,'KARNATAKA','P101');
INSERT INTO CANDIDATE VALUES('CDT3','CRESH','7562000952',35,'KARNATAKA','P202');
INSERT INTO CANDIDATE
VALUES('CDT4','DHARSH','9800523587',24,'TAMILNADU','P202');
INSERT INTO CANDIDATE
VALUES('CDT5','FAMILO','8006322245',22,'KARNATAKA','P202');
INSERT INTO CANDIDATE VALUES('CDT6','GODREJ','9995662004',26,'ANDHRA','P303');
SELECT *FROM CANDIDATE;

CONSTITUENCY

CREATE TABLE CONSTITUENCY(CNID VARCHAR(10) PRIMARY KEY,NAME


VARCHAR(20),STATE VARCHAR(20),NO_OF_VOTERS VARCHAR(20));
INSERT INTO CONSTITUENCY VALUES('CNT1','RR NAGAR','KARNATAKA','500');
INSERT INTO CONSTITUENCY VALUES('CNT2','ANJANIPURAM','ANDHRA','300');
INSERT INTO CONSTITUENCY VALUES('CNT3','JYNAJAR','KARNATAKA','5055');
INSERT INTO CONSTITUENCY VALUES('CNT4','RAJAJINAJAR','KARNATAKA','551');
INSERT INTO CONSTITUENCY VALUES('CNT5','HOSSUR','TAMILNADU','439');
VOTER
CREATE TABLE VOTER(VID VARCHAR(20) PRIMARY KEY,NAME VARCHAR(20),AGE
NUMBER(3),ADDRESS VARCHAR(20),CNID VARCHAR(20) REFERENCES
CONSTITUENCY(CNID));

CONTEST

CREATE TABLE CONTEST(CNID VARCHAR(20)REFERENCES CONSTITUENCY(CNID),CDID


VARCHAR(10) REFERENCES CANDIDATE(CDID));
INSERT INTO CONTEST VALUES('CNT1','CDT1');
INSERT INTO CONTEST VALUES('CNT5','CDT1');
INSERT INTO CONTEST VALUES('CNT1','CDT3');
INSERT INTO CONTEST VALUES('CNT2','CDT5');
INSERT INTO CONTEST VALUES('CNT3','CDT3');
INSERT INTO CONTEST VALUES('CNT4','CDT3');
SELECT *FROM CONTEST;
QUERY 1:) LIST THE DETAILS OF THE CANDIDATES WHO ARE CONTESTING FROM MORE
THAN ONE CONSTITUENCIES WHICH ARE BELONGS TO DIFFERENT STATES.
SQL>
SELECT * FROM CANDIDATE WHERE CDID IN(SELECT CDID FROM
CONTEST,CONSTITUENCY WHERE CONTEST.CNID=CONSTITUENCY.CNID GROUP BY CDID
HAVING COUNT(DISTINCT(STATE))>1);

--------------------------------------------------------------------------------
QUERY 2:) DISPLAY THE STATE NAME HAVING MAXIMUM NUMBER OF CONSTITUENCIES.
SQL>
SELECT STATE FROM CONSTITUENCY GROUP BY STATE HAVING COUNT(STATE)=(SELECT
MAX(COUNT(STATE)) FROM CONSTITUENCY GROUP BY STATE);

--------------------------------------------------------------------------------
QUERY 3:) CREATE A STORED PROCEDURE TO INSERT THE TUPLE INTO THE VOTER TABLE
BY CHECKING THE VOTER AGE. IF VOTER’S AGE IS AT LEAST 18 YEARS OLD, THEN INSERT
THE TUPLE INTO THE VOTER ELSE DISPLAY THE “NOT AN ELIGIBLE VOTER MSG”.
SQL>
CREATE OR REPLACE PROCEDURE INSERTDATA(ID VARCHAR2,NAME VARCHAR2,AGE
NUMBER,ADDR VARCHAR2,CNID VARCHAR2) AS BEGIN
IF AGE>=18 THEN INSERT INTO VOTER(VID,NAME,AGE,ADDRESS,CNID)
VALUES(ID,NAME,AGE,ADDR,CNID); ELSE
DBMS_OUTPUT.PUT_LINE('NOT AN ELIGIBLE VOTER'); END IF;
END;

EXECUTION 1:
BEGIN INSERTDATA('V03','KIRAN',17,'BALLARY','CN2'); END;

EXECUTION 2:
BEGIN INSERTDATA('V07','YUVI',34,'KANYAKUMARI','CNT3'); END;

SELECT *FROM VOTER;

--------------------------------------------------------------------------------
QUERY 4:) CREATE A STORED PROCEDURE TO DISPLAY THE NUMBER_OF_VOTERS IN THE
SPECIFIED CONSTITUENCY. WHERE THE CONSTITUENCY NAME IS PASSED AS AN
ARGUMENT TO THE STORED PROCEDURE.

SELECT *FROM CONSTITUENCY;

SQL>
CREATE OR REPLACE PROCEDURE GETNOOFVOTER(CONSTI_NAME IN VARCHAR2) IS
NO_VOTERS NUMBER; BEGIN SELECT NO_OF_VOTERS INTO NO_VOTERS FROM
CONSTITUENCY C WHERE C.NAME=CONSTI_NAME;
DBMS_OUTPUT.PUT_LINE(NO_VOTERS); END;

BEGIN GETNOOFVOTER('RR NAGAR'); END;

BEGIN GETNOOFVOTER('JYNAJAR'); END;


-------------------------------------------------------------------------------
QUERY 5:) CREATE A TRIGGER TO UPDATE THE COUNT OF “ NUMBER_OF_VOTERS” OF
THE RESPECTIVE CONSTITUENCY IN “CONSTITUENCY” TABLE , AFTER INSERTING A TUPLE
INTO THE “VOTERS” TABLE

(BEFORE EXICUTION)
SELECT *FROM VOTER;

SELECT *FROM CONSTITUENCY;


SQL>
CREATE TRIGGER COUNTOFVOTER AFTER INSERT ON VOTER BEGIN UPDATE
CONSTITUENCY C SET C.NO_OF_VOTERS=C.NO_OF_VOTERS+1 WHERE C.CNID IN (SELECT
CNID FROM VOTER); END;

BEGIN
INSERTDATA('V06','RAKESH',28,'RAJANUKUNTE','CNT5'); END;

(AFTER EXICUTION)
SELECT *FROM VOTER;
SELECT *FROM CONSTITUENCY;
DBMS _ PROGRAM 5

Design an ER-diagram for the following scenario, Convert the same into a relational
model, normalize Relations into a suitable Normal form and then solve the following
queries.

A country can have many Tourist places . Each Tourist place is identified by using
tourist_place_id, having a name, belongs to a state, Number of kilometers away from
the capital city of that state,history. There are many Tourists visits tourist places every
year. Each tourist is identified uniquely by using Tourist_id, having a Name, age,
Country and multiple emailids. A tourist visits many Tourist places, it isalso required to
record the visted_date in the database. A tourist can visit a Tourist place many times
at different dates. A Tourist place can be visited by many touristseither in the same
date or at different dates.
Queries:
1 List the state name which is having maximum number of ourist places.

2 List details of Tourist place where maximum number of tourists visited.

3 List the details of tourists visited all tourist places of the state “KARNATAKA”.

4 Display the details of the tourists visited at least one tourist place of the
state, but visited all states tourist places.

5 Display the details of the tourist place visited by the tourists of all country.
✓ SCHEMA:

TOURIST_PLACE
TID NAME STATE KILO_METER HISTORY

TOURIST PID NAME AGE COUNTRY E_ID

TID PID VISITED_DATE


VISITED
✓ ER DIAGRAM:
TOURIST_PLACE

CREATE TABLE TOURIST_PLACE(TPID VARCHAR(10) PRIMARY KEY,TPNAME


VARCHAR(10),STATE VARCHAR(10),HISTORY VARCHAR(10),KM NUMBER(5));
INSERT INTO TOURIST_PLACE
VALUES('TP01','NANDI','KARNATAKA','HILLS',50);
INSERT INTO TOURIST_PLACE
VALUES('TP02','ISKON','KARNATAKA','TEMPLE',10);
INSERT INTO TOURIST_PLACE
VALUES('TP03','BODH_GOA','BIHAR','DRINGS',110);
SELECT *FROM TOURIST_PLACE;

TOURIST

CREATE TABLE TOURIST(TID VARCHAR(10) PRIMARY KEY,TNAME


VARCHAR(10),COUNTRY VARCHAR(10),AGE NUMBER(3));
INSERT INTO TOURIST VALUES('T01','RAM','INDIA',22);
INSERT INTO TOURIST VALUES('T02','CHOCHAY','CHINA',21);
INSERT INTO TOURIST VALUES('T03','RAODE','RASIA',23);
INSERT INTO TOURIST VALUES('T04','AFRIDI','PAKISTAN',26);
SELECT *FROM TOURIST;
VISIT

CREATE TABLE VISIT(TID VARCHAR(10),TPID VARCHAR(10),VDATE


VARCHAR(10),FOREIGN KEY(TID) REFERENCES TOURIST(TID),FOREIGN
KEY(TPID) REFERENCES TOURIST_PLACE(TPID));
INSERT INTO VISIT VALUES('T01','TP01','23-10-19');
INSERT INTO VISIT VALUES('T02','TP01','21-09-19');
INSERT INTO VISIT VALUES('T03','TP01','20-08-19');
INSERT INTO VISIT VALUES('T04','TP01','18-08-19');
INSERT INTO VISIT VALUES('T02','TP02','02-02-19');
INSERT INTO VISIT VALUES('T03','TP03','04-02-19');
SELECT *FROM VISIT;
QUERY1:) LIST THE STATE NAME WHICH IS HAVING MAXIMUM NUMBER OF
TOURIST PLACES.
SQL>
SELECT STATE,COUNT(STATE) AS TOTAL FROM TOURIST_PLACE GROUP BY
STATE HAVING COUNT(TPID) IN (SELECT MAX(COUNT(STATE)) FROM
TOURIST_PLACE GROUP BY STATE);

--------------------------------------------------------------------------------
QUERY2: LIST DETAILS OF TOURIST PLACE WHERE MAXIMUM NUMBER OF
TOURISTS VISITED.
SQL>
SELECT * FROM TOURIST_PLACE WHERE TPID IN(SELECT V.TPID FROM
TOURIST T,VISIT V WHERE T.TID=V.TID GROUP BY V.TPID HAVING
COUNT(V.TPID)IN (SELECT MAX(COUNT(TPID))FROM VISIT GROUP BY TPID));

--------------------------------------------------------------------------------
QUERY3:) LIST THE DETAILS OF TOURISTS VISITED ALL TOURIST PLACES OF
THE STATE “KARNATAKA”.
SQL>
SELECT * FROM TOURIST WHERE TID IN(SELECT TID FROM VISIT V JOIN
TOURIST_PLACE TP ON V.TPID=TP.TPID WHERE TP.STATE='KARNATAKA'
GROUP BY TID HAVING COUNT(STATE) IN (SELECT COUNT(STATE) FROM
TOURIST_PLACE WHERE STATE='KARNATAKA'));
--------------------------------------------------------------------------------
QUERY4:) DISPLAY THE DETAILS OF THE TOURISTS VISITED AT LEAST ONE
TOURIST PLACE OF THE STATE, BUT VISITED ALL STATES TOURIST PLACES.
SQL>
SELECT * FROM TOURIST WHERE TID IN(SELECT TID FROM VISIT GROUP BY
TID HAVING COUNT(TID)>=(SELECT COUNT(*) FROM(SELECT STATE FROM
TOURIST_PLACE GROUP BY STATE)));

--------------------------------------------------------------------------------
QUERY5:) DISPLAY THE DETAILS OF THE TOURIST PLACE VISITED BY THE
TOURISTS OF ALL COUNTRY.

SQL>
SELECT *FROM TOURIST_PLACE WHERE TPID IN(SELECT TPID FROM VISIT
JOIN TOURIST ON VISIT.TID=TOURIST.TID GROUP BY TPID HAVING
COUNT(DISTINCT COUNTRY)=(SELECT COUNT(DISTINCT COUNTRY) FROM
TOURIST));

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

You might also like