Soham_K

CricbuzzDDL.version2

Dec 3rd, 2020 (edited)
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 17.40 KB | None | 0 0
  1. DROP TABLE BOWLING_SCORE;
  2. DROP TABLE BATTING_SCORE;
  3. DROP TABLE OUT_TYPE;
  4. DROP TABLE PARTNERSHIP;
  5. DROP TABLE INNINGS;
  6. DROP TABLE MATCH;
  7. DROP TABLE FIXTURE;
  8. DROP TABLE TOUR;
  9. DROP TABLE UMPIRE;
  10. DROP TABLE STADIUM;
  11. DROP TABLE BATSMAN;
  12. DROP TABLE BOWLER;
  13. DROP TABLE WICKET_KEEPER;
  14. DROP TABLE PLAYER;
  15. DROP TABLE MATCH_TYPE;
  16. DROP TABLE TEAM;
  17.  
  18.  
  19.  
  20. DROP SEQUENCE team_seq;
  21. DROP SEQUENCE player_seq;
  22. DROP SEQUENCE matchtype_seq;
  23. DROP SEQUENCE stadium_seq;
  24. DROP SEQUENCE umpire_seq;
  25. DROP SEQUENCE tour_seq;
  26. DROP SEQUENCE fixture_seq;
  27. DROP SEQUENCE match_seq;
  28. DROP SEQUENCE partnership_seq;
  29. DROP SEQUENCE outtype_seq;
  30. DROP SEQUENCE batting_seq;
  31. DROP SEQUENCE bowling_seq;
  32.  
  33.  
  34. CREATE TABLE TEAM
  35. (
  36.     TEAM_ID NUMBER(10),
  37.     TEAM_NAME VARCHAR2(50) UNIQUE NOT NULL,
  38.     TEAM_SF VARCHAR2(10) NOT NULL,
  39.     ESTABLISH_DATE DATE,
  40.     MATCHES NUMBER(20),
  41.     WON NUMBER(20),
  42.     LOST NUMBER(20),
  43.     DRAW NUMBER(20),
  44.     TEAM_LOGO BLOB,
  45.     HEAD_COACH VARCHAR2(50) NOT NULL,
  46.     BOARD_PRESIDENT VARCHAR2(50) NOT NULL,
  47.    
  48.     CONSTRAINT PKteam PRIMARY KEY (TEAM_ID)
  49. );
  50.  
  51. CREATE SEQUENCE team_seq START WITH 1;
  52. CREATE OR REPLACE TRIGGER team_on_insert
  53.   BEFORE INSERT ON TEAM
  54.   FOR EACH ROW
  55. BEGIN
  56.   SELECT team_seq.NEXTVAL
  57.   INTO :NEW.TEAM_ID
  58.   FROM DUAL;
  59. END;
  60.  
  61.  
  62. CREATE TABLE MATCH_TYPE
  63. (
  64.     MATCH_TYPE_ID NUMBER(10),
  65.     MATCH_TITLE VARCHAR2(10),
  66.    
  67.     CHECK (MATCH_TITLE IN ('T20', 'ODI', 'TEST')),
  68.    
  69.     CONSTRAINT PKmatchtype PRIMARY KEY (MATCH_TYPE_ID)
  70. );
  71.  
  72. CREATE SEQUENCE matchtype_seq START WITH 1;
  73. CREATE OR REPLACE TRIGGER matchtype_on_insert
  74.   BEFORE INSERT ON MATCH_TYPE
  75.   FOR EACH ROW
  76. BEGIN
  77.   SELECT matchtype_seq.NEXTVAL
  78.   INTO :NEW.MATCH_TYPE_ID
  79.   FROM DUAL;
  80. END;
  81.  
  82.  
  83. CREATE TABLE PLAYER
  84. (
  85.     PLAYER_ID NUMBER(10),
  86.     FIRST_NAME VARCHAR2(30) NOT NULL,
  87.     LAST_NAME VARCHAR2(30) NOT NULL,
  88.     BORN VARCHAR2(50) NOT NULL,
  89.     DOB DATE,
  90.     DEATH DATE,
  91.     ROLE VARCHAR2(30),
  92.     PROFILE_PIC BLOB,
  93.     STATUS VARCHAR2(10) DEFAULT 'Active',
  94.     TEAM_ID NUMBER(10) NOT NULL,
  95.     JERSEY NUMBER(3) NOT NULL,
  96.    
  97.     CHECK(ROLE IN('Wicket-keeper', 'Batsman', 'Bowler', 'All-rounder', 'Wicketkeeper-batsman')),
  98.     CHECK(STATUS IN('Active', 'Retired', 'Died')),
  99.    
  100.     CONSTRAINT PKplayer PRIMARY KEY (PLAYER_ID),
  101.     CONSTRAINT FKplayer FOREIGN KEY (TEAM_ID) REFERENCES TEAM
  102. );
  103.  
  104. CREATE SEQUENCE player_seq START WITH 1;
  105. CREATE OR REPLACE TRIGGER player_on_insert
  106.   BEFORE INSERT ON PLAYER
  107.   FOR EACH ROW
  108. BEGIN
  109.   SELECT player_seq.NEXTVAL
  110.   INTO :NEW.PLAYER_ID
  111.   FROM DUAL;
  112. END;
  113.  
  114.  
  115.  
  116. CREATE TABLE WICKET_KEEPER
  117. (
  118.     PLAYER_ID NUMBER(10),
  119.     MATCH_TYPE_ID NUMBER(10),
  120.     STUMPINGS NUMBER(7),
  121.     CATCHES NUMBER(7),
  122.     NUM_OF_MATCHES NUMBER(5),
  123.     NUM_OF_ING NUMBER(5),
  124.    
  125.     CONSTRAINT PKwk PRIMARY KEY (PLAYER_ID, MATCH_TYPE_ID),
  126.     CONSTRAINT FKwk FOREIGN KEY (PLAYER_ID) REFERENCES PLAYER,
  127.     CONSTRAINT FKwktwo FOREIGN KEY (MATCH_TYPE_ID) REFERENCES MATCH_TYPE
  128. );
  129.  
  130.  
  131. CREATE TABLE BOWLER
  132. (
  133.     PLAYER_ID NUMBER(10),
  134.     MATCH_TYPE_ID NUMBER(10),
  135.     WICKETS NUMBER(7),
  136.     BALLS_BOWLED NUMBER(7),
  137.     FIVE_WICKET_HAUL NUMBER(5),
  138.     TEN_WICKET_HAUL NUMBER(5),
  139.     BEST_BOWLING_MATCH VARCHAR2(6),
  140.     BEST_BOWLING_ING VARCHAR2(6),
  141.     BOWLING_STRIKE_RATE NUMBER(5, 2),
  142.     BOWLING_ECONOMY_RATE NUMBER(5, 2),
  143.     BOWLING_AVG NUMBER(5, 2),
  144.     BOWLING_STYLE VARCHAR2(50),
  145.     NUM_OF_MATCHES NUMBER(5),
  146.     NUM_OF_ING NUMBER(5),
  147.    
  148.     CHECK ( BOWLING_STYLE IN ('Right-arm fast', 'Right-arm fast-medium',
  149.     'Right-arm medium-fast', 'Right-arm medium', 'Right-arm medium-slow',
  150.     'Right-arm slow-medium', 'Right-arm slow', 'Left-arm fast', 'Left-arm fast-medium',
  151.     'Left-arm medium-fast', 'Left-arm medium', 'Left-arm medium-slow',
  152.     'Left-arm slow-medium', 'Left-arm slow', 'Right-arm off break',
  153.     'Right-arm leg break', 'Right-arm leg break googly', 'Right-arm leg spin',
  154.     'Slow left-arm orthodox', 'Slow left-arm wrist spin', 'Left-arm googly', 'Left-arm leg spin') ),
  155.    
  156.     CONSTRAINT PKbowler PRIMARY KEY (PLAYER_ID, MATCH_TYPE_ID),
  157.     CONSTRAINT FKbowler FOREIGN KEY (PLAYER_ID) REFERENCES PLAYER,
  158.     CONSTRAINT FKbowlertwo FOREIGN KEY (MATCH_TYPE_ID) REFERENCES MATCH_TYPE
  159. );
  160.  
  161.  
  162. CREATE TABLE BATSMAN
  163. (
  164.     PLAYER_ID NUMBER(10),
  165.     MATCH_TYPE_ID NUMBER(10),
  166.     RUNS NUMBER(5),
  167.     CENTURIES NUMBER(3),
  168.     HALF_CENTURIES NUMBER(3),
  169.     TWO_HUNDREDS NUMBER(3),
  170.     THREE_HUNDREDS NUMBER(3),
  171.     FOUR_HUNDREDS NUMBER(3),
  172.     NOT_OUT NUMBER(3),
  173.     TOP_SCORE NUMBER(4),
  174.     BATTING_AVG NUMBER(5, 2),
  175.     BATTING_STRIKE_RATE NUMBER(5, 2),
  176.     BATTING_STYLE VARCHAR2(20) NOT NULL,
  177.     DUCKS NUMBER(4),
  178.     FOURS NUMBER(4),
  179.     SIXES NUMBER(4),
  180.     NUM_OF_MATCHES NUMBER(5),
  181.     NUM_OF_ING NUMBER(5),
  182.    
  183.     CHECK (BATTING_STYLE IN ('Right-handed', 'Left-handed') ),
  184.     CONSTRAINT PKbatsman PRIMARY KEY (PLAYER_ID, MATCH_TYPE_ID),
  185.     CONSTRAINT FKbatsman FOREIGN KEY (PLAYER_ID) REFERENCES PLAYER,
  186.     CONSTRAINT FKbatsmantwo FOREIGN KEY (MATCH_TYPE_ID) REFERENCES MATCH_TYPE
  187. );
  188.  
  189.  
  190.  
  191.  
  192.  
  193. CREATE TABLE STADIUM
  194. (
  195.     STADIUM_ID NUMBER(10),
  196.     STADIUM_NAME VARCHAR2(50) NOT NULL,
  197.     LOCATION VARCHAR2(50) NOT NULL,
  198.     COUNTRY VARCHAR2(50) NOT NULL,
  199.     CAPACITY NUMBER(8) NOT NULL,
  200.    
  201.     CONSTRAINT PKstadium PRIMARY KEY (STADIUM_ID)
  202. );
  203.  
  204. CREATE SEQUENCE stadium_seq START WITH 1;
  205. CREATE OR REPLACE TRIGGER stadium_on_insert
  206.   BEFORE INSERT ON STADIUM
  207.   FOR EACH ROW
  208. BEGIN
  209.   SELECT stadium_seq.NEXTVAL
  210.   INTO :NEW.STADIUM_ID
  211.   FROM DUAL;
  212. END;
  213.  
  214.  
  215.  
  216.  
  217. CREATE TABLE UMPIRE
  218. (
  219.     UMPIRE_ID NUMBER(10),
  220.     STATUS VARCHAR2(10) DEFAULT 'Active',
  221.     FIRST_NAME VARCHAR2(30) NOT NULL,
  222.     LAST_NAME VARCHAR2(30) NOT NULL,
  223.     COUNTRY VARCHAR(50) NOT NULL,
  224.     DOB DATE NOT NULL,
  225.     DEATH DATE,
  226.     CHECK(STATUS IN ('Active', 'Retired', 'Died')),
  227.    
  228.     CONSTRAINT PKumprie PRIMARY KEY(UMPIRE_ID)
  229. );
  230.  
  231. CREATE SEQUENCE umpire_seq START WITH 1;
  232. CREATE OR REPLACE TRIGGER umpire_on_insert
  233.   BEFORE INSERT ON UMPIRE
  234.   FOR EACH ROW
  235. BEGIN
  236.   SELECT umpire_seq.NEXTVAL
  237.   INTO :NEW.UMPIRE_ID
  238.   FROM DUAL;
  239. END;
  240.  
  241.  
  242.  
  243.  
  244. CREATE TABLE TOUR
  245. (
  246.     TOUR_ID NUMBER(10),
  247.     HOST_TEAM NUMBER(10) NOT NULL,
  248.     VISITING_TEAM NUMBER(10) NOT NULL,
  249.     T20 NUMBER(10),
  250.     ODI NUMBER(10),
  251.     TEST NUMBER(10),
  252.    
  253.     CONSTRAINT PKtour PRIMARY KEY (TOUR_ID),
  254.     CONSTRAINT FKoneTour FOREIGN KEY (HOST_TEAM) REFERENCES TEAM (TEAM_ID),
  255.     CONSTRAINT FKtwoTour FOREIGN KEY (VISITING_TEAM) REFERENCES TEAM (TEAM_ID)
  256. );
  257.  
  258. CREATE SEQUENCE tour_seq START WITH 1;
  259. CREATE OR REPLACE TRIGGER tour_on_insert
  260.   BEFORE INSERT ON TOUR
  261.   FOR EACH ROW
  262. BEGIN
  263.   SELECT tour_seq.NEXTVAL
  264.   INTO :NEW.TOUR_ID
  265.   FROM DUAL;
  266. END;
  267.  
  268.  
  269.  
  270.  
  271. CREATE TABLE FIXTURE
  272. (
  273.     FIXTURE_ID  NUMBER(10),
  274.     TOUR_ID NUMBER(10) NOT NULL,
  275.     DATETIME    DATE NOT NULL,
  276.     STADIUM_ID NUMBER(10) NOT NULL,
  277.     MATCH_TYPE_ID NUMBER(10) NOT NULL,
  278.     ORDERING NUMBER(2),
  279.    
  280.     CONSTRAINT PKfixture PRIMARY KEY (FIXTURE_ID),
  281.     CONSTRAINT FKfixture FOREIGN KEY (STADIUM_ID) REFERENCES STADIUM,
  282.     CONSTRAINT FKtwoFixture FOREIGN KEY (TOUR_ID) REFERENCES TOUR,
  283.     CONSTRAINT FKthreeFixture FOREIGN KEY (MATCH_TYPE_ID) REFERENCES MATCH_TYPE
  284. );
  285.  
  286. CREATE SEQUENCE fixture_seq START WITH 1;
  287. CREATE OR REPLACE TRIGGER fixture_on_insert
  288.   BEFORE INSERT ON FIXTURE
  289.   FOR EACH ROW
  290. BEGIN
  291.   SELECT fixture_seq.NEXTVAL
  292.   INTO :NEW.FIXTURE_ID
  293.   FROM DUAL;
  294. END;
  295.  
  296.  
  297.  
  298.  
  299. CREATE TABLE MATCH
  300. (
  301.     MATCH_ID NUMBER(10),
  302.     FIXTURE_ID NUMBER(10) NOT NULL UNIQUE,
  303.     TOUR_ID NUMBER(10) NOT NULL,
  304.     UMPIRE_ONE NUMBER(10),
  305.     UMPIRE_TWO NUMBER(10),
  306.     UMPIRE_THREE NUMBER(10),
  307.     HOST_TEAM NUMBER(10) NOT NULL,
  308.     VISITING_TEAM NUMBER(10) NOT NULL,
  309.     WINNER NUMBER(10),
  310.     MATCH_TYPE_ID NUMBER(10) NOT NULL,
  311.     MATCH_STATUS VARCHAR2(20) NOT NULL,
  312.     MAN_OF_THE_MATCH NUMBER(10),
  313.     RESULT VARCHAR2(60),
  314.     TOS_WINNER NUMBER(10),
  315.     TOS_DECISION VARCHAR2(30),
  316.     HOST_TEAM_CAPTAIN NUMBER(10),
  317.     VISITING_TEAM_CAPTAIN NUMBER(10),
  318.     HOST_TEAM_WK NUMBER(10), /*WICKET_KEEPER OF TEAM ONE*/
  319.     VISITING_TEAM_WK NUMBER(10),
  320.    
  321.     CHECK (MATCH_STATUS IN ('Live', 'End', 'Upcoming', 'Abandoned') ),
  322.     CHECK (TOS_DECISION IN ('Elected to bat first', 'Elected to bowl first') ),
  323.    
  324.     CONSTRAINT PKmatch PRIMARY KEY (MATCH_ID),
  325.     CONSTRAINT FKMATCH FOREIGN KEY (TOUR_ID) REFERENCES TOUR (TOUR_ID),
  326.     CONSTRAINT FKoneMATCH FOREIGN KEY (FIXTURE_ID) REFERENCES FIXTURE (FIXTURE_ID),
  327.     CONSTRAINT FKtwoMATCH FOREIGN KEY (UMPIRE_ONE) REFERENCES UMPIRE (UMPIRE_ID),
  328.     CONSTRAINT FKthreeMATCH FOREIGN KEY (UMPIRE_TWO) REFERENCES UMPIRE (UMPIRE_ID),
  329.     CONSTRAINT FKfourMATCH FOREIGN KEY (UMPIRE_THREE) REFERENCES UMPIRE (UMPIRE_ID),
  330.     CONSTRAINT FKthirteenMATCH FOREIGN KEY (HOST_TEAM) REFERENCES TEAM (TEAM_ID),
  331.     CONSTRAINT FKfourteenMATCH FOREIGN KEY (VISITING_TEAM) REFERENCES TEAM (TEAM_ID),
  332.     CONSTRAINT FKfiveMATCH FOREIGN KEY (WINNER) REFERENCES TEAM (TEAM_ID),
  333.     CONSTRAINT FKsixMATCH FOREIGN KEY (MATCH_TYPE_ID) REFERENCES MATCH_TYPE (MATCH_TYPE_ID),
  334.     CONSTRAINT FKsevenMATCH FOREIGN KEY (MAN_OF_THE_MATCH) REFERENCES PLAYER (PLAYER_ID),
  335.     CONSTRAINT FKeightMATCH FOREIGN KEY (TOS_WINNER) REFERENCES TEAM (TEAM_ID),
  336.     CONSTRAINT FKnineMATCH FOREIGN KEY (HOST_TEAM_CAPTAIN) REFERENCES PLAYER (PLAYER_ID),
  337.     CONSTRAINT FKtenMATCH FOREIGN KEY (VISITING_TEAM_CAPTAIN) REFERENCES PLAYER (PLAYER_ID),
  338.     CONSTRAINT FKelevenMATCH FOREIGN KEY (HOST_TEAM_WK) REFERENCES PLAYER (PLAYER_ID),
  339.     CONSTRAINT FKtwelveMATCH FOREIGN KEY (VISITING_TEAM_WK) REFERENCES PLAYER (PLAYER_ID)
  340. );
  341.  
  342. CREATE SEQUENCE match_seq START WITH 1;
  343. CREATE OR REPLACE TRIGGER match_on_insert
  344.   BEFORE INSERT ON MATCH
  345.   FOR EACH ROW
  346. BEGIN
  347.   SELECT match_seq.NEXTVAL
  348.   INTO :NEW.MATCH_ID
  349.   FROM DUAL;
  350. END;
  351.  
  352.  
  353.  
  354.  
  355. CREATE TABLE INNINGS
  356. (
  357.     INNINGS_NO NUMBER(1),
  358.     MATCH_ID NUMBER(10),
  359.     BATTING_TEAM NUMBER(10) NOT NULL,
  360.     BOWLING_TEAM NUMBER(10) NOT NULL,
  361.     TOTAL_RUNS NUMBER(4),
  362.     WICKETS NUMBER(2),
  363.     FOURS NUMBER(3),
  364.     SIXES NUMBER(3),
  365.     OVERS NUMBER(4, 1),
  366.     DAY NUMBER(1),
  367.     WIDES NUMBER(3),
  368.     NO_BALLS NUMBER(3),
  369.     BYE_RUNS NUMBER(3),
  370.     LEG_BYES NUMBER(3),
  371.    
  372.     CHECK (INNINGS_NO IN (1, 2, 3, 4)),
  373.     CONSTRAINT PKinnings PRIMARY KEY (INNINGS_NO, MATCH_ID),
  374.     CONSTRAINT FKoneInnings FOREIGN KEY (MATCH_ID) REFERENCES MATCH,
  375.     CONSTRAINT FKtwoInnings FOREIGN KEY (BATTING_TEAM) REFERENCES TEAM (TEAM_ID),
  376.     CONSTRAINT FKthreeInnings FOREIGN KEY (BOWLING_TEAM) REFERENCES TEAM (TEAM_ID)
  377. );
  378.  
  379.  
  380.  
  381.  
  382. CREATE TABLE PARTNERSHIP
  383. (
  384.     PARTNERSHIP_ID NUMBER(10),
  385.     PLAYER_ONE NUMBER(10),
  386.     PLAYER_TWO NUMBER(10),
  387.     INNINGS_NO NUMBER(1),
  388.     MATCH_ID NUMBER(10),
  389.     RUNS NUMBER(4),
  390.     BALLS NUMBER(5),
  391.    
  392.     CONSTRAINT PKpartner PRIMARY KEY(PARTNERSHIP_ID),
  393.     CONSTRAINT FKonePARTNER FOREIGN KEY(PLAYER_ONE) REFERENCES PLAYER(PLAYER_ID),
  394.     CONSTRAINT FKtwoPARTNER FOREIGN KEY(PLAYER_TWO) REFERENCES PLAYER(PLAYER_ID),
  395.     CONSTRAINT FKthreePARTNER FOREIGN KEY(INNINGS_NO, MATCH_ID) REFERENCES INNINGS(INNINGS_NO, MATCH_ID)
  396. );
  397.  
  398. CREATE SEQUENCE partnership_seq START WITH 1;
  399. CREATE OR REPLACE TRIGGER partnership_on_insert
  400.   BEFORE INSERT ON PARTNERSHIP
  401.   FOR EACH ROW
  402. BEGIN
  403.   SELECT partnership_seq.NEXTVAL
  404.   INTO :NEW.PARTNERSHIP_ID
  405.   FROM DUAL;
  406. END;
  407.  
  408.  
  409.  
  410. CREATE TABLE OUT_TYPE
  411. (
  412.     OUT_ID NUMBER(10),
  413.     OUT_TITLE VARCHAR2(50),
  414.     CHECK (OUT_TITLE IN ('Run out', 'Caught', 'Obstructing the field',
  415.     'LBW', 'Hit wicket', 'Handled the ball', 'Hit the ball twice',
  416.     'stumped', 'Bowled', 'Timed out', 'Retired')),
  417.    
  418.     CONSTRAINT PKouttype PRIMARY KEY (OUT_ID)
  419. );
  420.  
  421. CREATE SEQUENCE outtype_seq START WITH 1;
  422. CREATE OR REPLACE TRIGGER outtype_on_insert
  423.   BEFORE INSERT ON OUT_TYPE
  424.   FOR EACH ROW
  425. BEGIN
  426.   SELECT outtype_seq.NEXTVAL
  427.   INTO :NEW.OUT_ID
  428.   FROM DUAL;
  429. END;
  430.  
  431.  
  432.  
  433. CREATE TABLE BATTING_SCORE
  434. (
  435.     BATTING_ID NUMBER(10),
  436.     PLAYER_ID NUMBER(10),
  437.     INNINGS_NO NUMBER(1),
  438.     MATCH_ID NUMBER(10),
  439.     RUNS NUMBER(4),
  440.     BALLS NUMBER(4),
  441.     FOURS NUMBER(3),
  442.     SIXES NUMBER(3),
  443.     OUT_BY NUMBER(10),
  444.     OUT_CONTRIBUTOR NUMBER(10),
  445.     OUT_ID NUMBER(10),
  446.     STATUS VARCHAR2(10),
  447.    
  448.     CHECK (STATUS IN ('OUT','NOT OUT','YET TO BAT','NEED NOT BATTED')),
  449.  
  450.     CONSTRAINT PKbattingscore PRIMARY KEY (BATTING_ID),
  451.     CONSTRAINT FKonebattingscore FOREIGN KEY(PLAYER_ID) REFERENCES PLAYER (PLAYER_ID),
  452.     CONSTRAINT FKtwobattingscore FOREIGN KEY(INNINGS_NO, MATCH_ID) REFERENCES INNINGS (INNINGS_NO, MATCH_ID),
  453.     CONSTRAINT FKthreebattingscore FOREIGN KEY(OUT_BY) REFERENCES PLAYER (PLAYER_ID),
  454.     CONSTRAINT FKfourbattingscore FOREIGN KEY(OUT_CONTRIBUTOR) REFERENCES PLAYER (PLAYER_ID),
  455.     CONSTRAINT FKfivebattingscore FOREIGN KEY(OUT_ID) REFERENCES OUT_TYPE
  456. );
  457.  
  458. CREATE SEQUENCE batting_seq START WITH 1;
  459. CREATE OR REPLACE TRIGGER batting_on_insert
  460.   BEFORE INSERT ON BATTING_SCORE
  461.   FOR EACH ROW
  462. BEGIN
  463.   SELECT batting_seq.NEXTVAL
  464.   INTO :NEW.BATTING_ID
  465.   FROM DUAL;
  466. END;
  467.  
  468.  
  469.  
  470.  
  471. CREATE TABLE BOWLING_SCORE
  472. (
  473.     BOWLING_ID NUMBER(10),
  474.     PLAYER_ID NUMBER(10),
  475.     INNINGS_NO NUMBER(1),
  476.     MATCH_ID NUMBER(10),
  477.     RUNS NUMBER(4),
  478.     WICKETS NUMBER(2),
  479.     BYE_RUNS NUMBER(4),
  480.     LEG_BYES NUMBER(4),
  481.     WIDES NUMBER(4),
  482.     NO_BALLS NUMBER(4),
  483.     OVERS NUMBER(4, 1),
  484.     MAIDENS NUMBER(3),
  485.    
  486.     CONSTRAINT PKbowlingscore PRIMARY KEY (BOWLING_ID),
  487.     CONSTRAINT FKonebowlingscore FOREIGN KEY (PLAYER_ID) REFERENCES PLAYER,
  488.     CONSTRAINT FKtwobowlingscore FOREIGN KEY (INNINGS_NO, MATCH_ID) REFERENCES INNINGS(INNINGS_NO, MATCH_ID)
  489. );
  490.  
  491. CREATE SEQUENCE bowling_seq START WITH 1;
  492. CREATE OR REPLACE TRIGGER bowling_on_insert
  493.   BEFORE INSERT ON BOWLING_SCORE
  494.   FOR EACH ROW
  495. BEGIN
  496.   SELECT bowling_seq.NEXTVAL
  497.   INTO :NEW.BOWLING_ID
  498.   FROM DUAL;
  499. END;
  500.  
  501.  
  502.  
  503. --Functions--
  504.  
  505.  
  506. -- calculates age --
  507.  
  508. CREATE OR REPLACE FUNCTION AGECALCULATOR(d1 IN DATE, d2 IN DATE)
  509. RETURN NUMBER IS
  510.     age NUMBER(3);
  511. BEGIN
  512.     age := FLOOR(MONTHS_BETWEEN(d1, d2)/12);
  513.     RETURN age;
  514. END;
  515.  
  516.  
  517. -- batting strike rate = (runs scored / ball faced) * 100
  518. -- bowling strike rate = (balls bowled / wickets taken)
  519.  
  520. CREATE OR REPLACE FUNCTION STRIKE_RATE (playerid IN NUMBER, battingORbowling IN VARCHAR2, matchtype IN VARCHAR2)
  521. RETURN NUMBER IS
  522.     strike NUMBER := 0;
  523.     runsScored NUMBER := 0;
  524.     ballfaced NUMBER := 0;
  525.     ballsbowled NUMBER := 0;
  526.     wicketstaken NUMBER := 0;
  527. BEGIN
  528.     IF battingORbowling = 'Batting' THEN
  529.             SELECT RUNS INTO runsScored FROM CRICBUZZ.BATSMAN WHERE PLAYER_ID = playerid;
  530.             SELECT SUM(BALLS) INTO ballfaced FROM CRICBUZZ.BATTING_SCORE WHERE PLAYER_ID = playerid
  531.             AND MATCH_ID = ANY (SELECT MATCH_ID FROM CRICBUZZ.MATCH
  532.             WHERE MATCH_TYPE_ID = ANY(SELECT MATCH_TYPE_ID FROM MATCH_TYPE
  533.             WHERE MATCH_TITLE = matchtype));
  534.             strike := ROUND((runsScored/ballfaced)*100, 2);
  535.     ELSIF battingORbowling = 'Bowling' THEN
  536.             SELECT BALLS_BOWLED, WICKETS
  537.             INTO ballsbowled, wicketstaken
  538.             FROM CRICBUZZ.BOWLER
  539.             WHERE PLAYER_ID = playerid AND
  540.             MATCH_TYPE_ID = (SELECT MATCH_TYPE_ID FROM CRICBUZZ.MATCH_TYPE
  541.             WHERE MATCH_TITLE = matchtype);
  542.             strike := ROUND(ballsbowled/wicketstaken, 2);
  543.     END IF;
  544.     RETURN strike;
  545. END;
  546.  
  547.  
  548.  
  549. -- batting average = (runs scored / number of time out)
  550. -- bowling average = (runs conceded / wicket taken)
  551.  
  552. CREATE OR REPLACE FUNCTION AVERAGE (playerid IN NUMBER, battingORbowling IN VARCHAR2, matchtype IN VARCHAR2)
  553. RETURN NUMBER IS
  554.     aver NUMBER := 0;
  555.     runsScored NUMBER := 0;
  556.     timesOut NUMBER := 0;
  557.     numInnings NUMBER := 0;
  558.     runsConceded NUMBER := 0;
  559.     wickettaken NUMBER := 0;
  560. BEGIN
  561.     IF battingORbowling = 'Batting' THEN
  562.             SELECT RUNS, NOT_OUT, NUM_OF_ING
  563.             INTO runsScored, timesOut, numInnings
  564.             FROM CRICBUZZ.BATSMAN WHERE PLAYER_ID = playerid
  565.             AND MATCH_TYPE_ID = ANY(SELECT MATCH_TYPE_ID
  566.             FROM CRICBUZZ.MATCH_TYPE
  567.             WHERE MATCH_TITLE = matchtype);
  568.            
  569.             timesOut := (numInnings - timesOut);
  570.             aver := ROUND(runsScored/timesOut, 2);
  571.    
  572.     ELSIF battingORbowling = 'Bowling' THEN
  573.             SELECT WICKETS
  574.             INTO wickettaken FROM CRICBUZZ.BOWLER
  575.             WHERE PLAYER_ID = playerid AND MATCH_TYPE_ID = ANY(SELECT MATCH_TYPE_ID
  576.             FROM CRICBUZZ.MATCH_TYPE
  577.             WHERE MATCH_TITLE = matchtype);
  578.            
  579.             SELECT SUM(RUNS) INTO runsConceded FROM CRICBUZZ.BOWLING_SCORE
  580.             WHERE PLAYER_ID = playerid
  581.             AND MATCH_ID = ANY (SELECT MATCH_ID FROM CRICBUZZ.MATCH
  582.             WHERE MATCH_TYPE_ID = ANY(SELECT MATCH_TYPE_ID FROM CRICBUZZ.MATCH_TYPE
  583.             WHERE MATCH_TITLE = matchtype));
  584.            
  585.             aver := ROUND(runsConceded/wickettaken, 2);
  586.     END IF;
  587.     RETURN aver;
  588. END;
  589.  
  590.  
  591.  
  592. -- Economy = runs conceded / overs bowled
  593.  
  594. CREATE OR REPLACE FUNCTION ECONOMY(playerid IN NUMBER, matchtype IN VARCHAR2)
  595. RETURN NUMBER IS
  596.     eco NUMBER := 0;
  597.     runsConceded NUMBER := 0;
  598.     oversbowled NUMBER := 0;
  599. BEGIN
  600.     SELECT BALLS_BOWLED
  601.     INTO oversbowled
  602.     FROM CRICBUZZ.BOWLER
  603.     WHERE PLAYER_ID = playerid AND
  604.     MATCH_TYPE_ID = (SELECT MATCH_TYPE_ID FROM CRICBUZZ.MATCH_TYPE
  605.     WHERE MATCH_TITLE = matchtype);
  606.    
  607.     oversbowled := oversbowled/6;
  608.    
  609.   SELECT SUM(RUNS) INTO runsConceded FROM CRICBUZZ.BOWLING_SCORE
  610.     WHERE PLAYER_ID = playerid
  611.     AND MATCH_ID = ANY (SELECT MATCH_ID FROM CRICBUZZ.MATCH
  612.     WHERE MATCH_TYPE_ID = ANY(SELECT MATCH_TYPE_ID FROM CRICBUZZ.MATCH_TYPE
  613.     WHERE MATCH_TITLE = matchtype));
  614.  
  615.     eco := ROUND(runsConceded/oversbowled, 2);
  616.     RETURN eco;
  617. END;
  618.  
  619.  
  620. -- checking/verification if the functions work properly:
  621.  
  622. DECLARE
  623.     strk NUMBER := 0;
  624.         aver NUMBER := 0;
  625.         eco NUMBER := 0;
  626. BEGIN
  627.    
  628. END;
  629.  
  630. ------------------------------------------------------------------
  631. /* MATCH_TYPE INSERTION */
  632. INSERT INTO MATCH_TYPE (MATCH_TITLE)
  633. VALUES ('T20');
  634.  
  635. INSERT INTO MATCH_TYPE (MATCH_TITLE)
  636. VALUES ('ODI');
  637.  
  638. INSERT INTO MATCH_TYPE (MATCH_TITLE)
  639. VALUES ('TEST');
  640.  
  641.  
  642.  
  643. /* OUT_TYPE INSERTION */
  644. INSERT INTO OUT_TYPE (OUT_TITLE)
  645. VALUES ('Run out');
  646.  
  647. INSERT INTO OUT_TYPE (OUT_TITLE)
  648. VALUES ('Caught');
  649.  
  650. INSERT INTO OUT_TYPE (OUT_TITLE)
  651. VALUES ('LBW');
  652.  
  653. INSERT INTO OUT_TYPE (OUT_TITLE)
  654. VALUES ('Hit wicket');
  655.  
  656. INSERT INTO OUT_TYPE (OUT_TITLE)
  657. VALUES ('Handled the ball');
  658.  
  659. INSERT INTO OUT_TYPE (OUT_TITLE)
  660. VALUES ('Hit the ball twice');
  661.  
  662. INSERT INTO OUT_TYPE (OUT_TITLE)
  663. VALUES ('stumped');
  664.  
  665. INSERT INTO OUT_TYPE (OUT_TITLE)
  666. VALUES ('Bowled');
  667.  
  668. INSERT INTO OUT_TYPE (OUT_TITLE)
  669. VALUES ('Timed out');
  670.  
  671. INSERT INTO OUT_TYPE (OUT_TITLE)
  672. VALUES ('Retired');
Add Comment
Please, Sign In to add comment