project_2cis405(groupproject)

23
1 CIS 405 Project Oracle Database Development Juan Barillas Arturo Medina Larry Ngo James Wu

Upload: james-wu

Post on 13-Apr-2017

12 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Project_2CIS405(GroupProject)

1

CIS 405 Project

Oracle Database Development

Juan Barillas

Arturo Medina

Larry Ngo

James Wu

Page 2: Project_2CIS405(GroupProject)

2

Table of Contents

PART1

Database Scenario…………………………………………………………………………... 3-4

ER diagram………………………………………………………………………...…………………... 5

ER diagrams to the Relational………………………………………………..……………..... 6

Functional dependency analysis……………………………………………..……………….. 7

Relational Schema after Normalization……………………………………..………………... 7

PART 2

Database Creation Script for Department Table………………………….………….…..…… 8

Database Creation Script for Employee Table……………………………..…………………. 9

Database Creation Script for Department Location Table……………………………...…… 10

Database Creation Script for Project Table………………………………………………...... 11

Database Creation Script for Dependent Table……………………………………………… 12

Database Creation Script for Works On Table……………………………………………. 13-15

Database Structure…………………………………………………………………………… 16

Database Instance…………………………………………………………………………….. 17

Testing Database…………………………………………………………………………... 18-20

Page 3: Project_2CIS405(GroupProject)

3

PART1

Database Scenario

The COMPANY database keeps track of a company's employees, departments, and projects

1. The company is organized into departments. Each department has a unique name, a unique number, and a particular employee who manages the department. We keep track of the start date when the employee began managing the department. A department may have several locations.

2. A department controls a number of projects. Each project has a unique name, a unique number and a single location.

3. We store each employee's name, social security number, address, salary, sex and birthday. An employee is assigned to one department but may work on several projects, which are not necessarily controlled by the same department. We keep track of the number of hours per week that an employee works on each project. We also keep track of the direct supervisor of each employee.

4. We want to keep track of the dependents of each employee for insurance purpose. We keep each dependent's name, sex, birthday and relationship to the employees.

Manages 1:1 Works_For 1:NControls 1:N Supervision 1: NWorkd_on M:N Dependents_Of 1:N

Business RulesOne employee must work for one and only one department.One department must have 4 or more employees.

One employee may manage one and only one department.One department must be managed by one and only employee.

One department may control one or more projects.One project must be controlled by one and only one department.

One employee must work on one or many projects.One project must have one or many employees to work on.

One employee may have one or more dependents.One dependent must belong to one and only one employee.

One employee may supervise many other employees.One employee may be supervised by another employee.

Page 4: Project_2CIS405(GroupProject)

4

Given the above database scenario and business rules, do the following things:

Relationship types using relationship matrix

 

 Employee Department Project Dependent

 Employee supervise  Has

Is managed

 has  Belongs to

Department Work for

 Manages

 ____  Is controlled  ____

Project Works on  Control ____  ____

Dependent Has  ____ ____  ____

 

Page 5: Project_2CIS405(GroupProject)

5

ER diagram with 1) entity types, 2) relationship types, 3) keys, 4) cardinality ratio and 5) connection.

Page 6: Project_2CIS405(GroupProject)

6

ER diagrams to a relational database indicating the relation name, attribute name and primary key for each relation.

 

Table name: EMPLOYEE

 Employee_ID  Name  SSN  Address  Salary

Sex DOB Spvr_ID Dept_Num

 

Table name: DEPARTMENT

 Dept_Num  Dept_Name Mgr_ID Mgr_StartDate  Employee_ID

 

Table name: PROJECT

 Project_Num  ProjectName  Project_Loc  Dept_Num

 

Table name: DEPENDENT

 Employee_ID  Depend_Name  Sex DOB  Relantionship

 

Table name: DEPT_LOC

 Dept_Num  _Dept_Loc

 

Table name: WORKS_ON

 Employee_ID _Project_Num  HrsPerWeek

 

. Establish join paths for the above relational database using the referential integrity by

drawing arrow lines between the above tables. Indicate all the foreign keys (FK).

( FK > PK)

EMPLOYEE.Dept_Num>DEPARTMENT.Dept_Num

PROJECT.Dept_Num>DEPARTMENT.Dept_Num

DEPENDENT.Employee_ID>EMPLOYEE.Employee_ID

Page 7: Project_2CIS405(GroupProject)

7

DEPT_LOC.Dept_Num>DEPARTMENT.Dept_Num

WORKS_ON.Employee_ID>EMPLOYEE.Employee_ID

WORKS_ON.Project_Num>PROJECT.Project_Num

Functional Dependency Analysis

(Determinant Attribute > Dependent Attribute)

Employee_ID > Name, SSN, Address, Salary, Sex, DOB, Spvr_ID

Dept_Num > Dept_Name, Employee_ID

Dept_Num, Mgr_ID > Mgr_StartDate

Project_Num > ProjectName, Project_Loc

Employee_ID, Project_Num > HrsPerWeek

Employee_ID, Depend_Name > Sex, DOB, Relationship

Relational Schema after Normalization

Table name: EMPLOYEE  Employee_ID  Name  SSN  Address  SalarySex DOB

Table name: DEPARTMENT Dept_Num  Employee_ID Dept_Name Table name: PROJECT  Project_Num  ProjectName  Project_Loc  Dept_Num

 Table name: DEPENDENT  Employee_ID   Depend_Name  Sex DOB  Relantionship Table name: DEPT_LOC Dept_Num  _Dept_Loc Table name: WORKS_ON Employee_ID _Project_Num  HrsPerWeek 

Page 8: Project_2CIS405(GroupProject)

8

PART 2

Database Creation Script for Department Table

CREATE TABLE DEPARTMENT_t (DNUM number NOT NULL, DNAME VARCHAR(25) , MGRSSN NUMBER(9) , MGRSTARTDATE VARCHAR(20) , CONSTRAINT DEPARTMENT_t_PK PRIMARY KEY (DNUM),CONSTRAINT DEPARTMENT_t_FK FOREIGN KEY (MGRSSN) REFERENCES amedin62.emp_t(ESSN));

INSERT INTO DEPARTMENT_t (DNUM, DNAME, MGRSSN, MGRSTARTDATE)VALUES (1, 'Accounting', 58129514, '15-JAN-78');

INSERT INTO DEPARTMENT_t (DNUM, DNAME, MGRSSN, MGRSTARTDATE)VALUES (2, 'Marketing', 51250127, '15-JUL-77');

INSERT INTO DEPARTMENT_t (DNUM, DNAME, MGRSSN, MGRSTARTDATE)VALUES (3, 'Research', 67853684, '15-DEC-79');

INSERT INTO DEPARTMENT_t (DNUM, DNAME, MGRSSN, MGRSTARTDATE)VALUES (4, 'Management', 57192337, '12-MAY-76');

Page 9: Project_2CIS405(GroupProject)

9

Database Creation Script for Employee Table CREATE TABLE EMP_T

(

FNAME VARCHAR2(9),

MINIT VARCHAR2(5),

LNAME VARCHAR2(8),

ESSN NUMBER(9),

BDATE DATE,

SEX VARCHAR2(3),

SALARY NUMBER(5),

SUPERSSN NUMBER(9),

DNUM NUMBER(1),

CONSTRAINT EMP_PK PRIMARY KEY(ESSN),

CONSTRAINT EMP_SUPERSSN_FK1 FOREIGN KEY (SUPERSSN) REFERENCES EMP_T(ESSN), CONSTRAINT EMP_DNUMBER_FK2 FOREIGN KEY (DNUMBER) REFERENCES LNGO12.DEPARTMENT_T(DNUM));

INSERT INTO EMP_T VALUES

('JOHN','B','SMITH',123456789,'09-JAN-55','M',30000,333445555,5);

INSERT INTO EMP_T VALUES

('FRANKLIN','T','WONG',333445555,'08-DEC-45','M',40000,888665555,5);

INSERT INTO EMP_T VALUES

('ALICIA','J','ZELAYA',999887777,'19-JUL-58','F',25000,987654321,4);

INSERT INTO EMP_T VALUES

('JENNIFER','S','WALLACE',987654321,'20-JUN-31','F',43000,888665555,4);

INSERT INTO EMP_T VALUES

('RAMESH','K','NARAYAN',666884444,'15-SEP-52','M',38000,333445555,5);

INSERT INTO EMP_T VALUES

('JOYCE','A','ENGLISH',453453453,'31-JUL-62','F',25000,333445555,5);

INSERT INTO EMP_T VALUES

('AHMAD','V','JABBAR',987987987,'29-MAR-59','M',25000,987654321,4);

INSERT INTO EMP_T VALUES

('JAMES','E','BORG',888665555,'10-NOV-27','M',55000,NULL,1);

Page 10: Project_2CIS405(GroupProject)

10

Database Creation Script for Department Location

CREATE TABLE DeptLoc (DNumber NUMBER(2), DLocation VARCHAR2(13) );INSERT INTO DeptLoc VALUES (1,'Houston');INSERT INTO DeptLoc VALUES (4,'Stafford');INSERT INTO DeptLoc VALUES (5,'Bellaire');INSERT INTO DeptLoc VALUES (5,'Houston');INSERT INTO DeptLoc VALUES (5,'Sugarland');

Alter Table DeptLocADD CONSTRAINT DeptLOc_PK PRIMARY KEY (DNumber, DLocation);

ALTER TABLE DeptLocADD CONSTRAINT DeptLoc_FK FOREIGN KEY (DNumber) REFERENCES lngo12.Department_t (DNUM);

Page 11: Project_2CIS405(GroupProject)

11

Database Creation Script for Project Table

CREATE TABLE Project_T (PName VARCHAR2(25) NOT NULL, PNum NUMBER(11), PLocation VARCHAR2(20), DNum NUMBER(11));Insert Into Project_t (Pname, PNum, PLocation, DNum)Values ('ProductX', 1,'Bellaire',5);Insert Into Project_t (Pname, PNum, PLocation, DNum)Values ('ProductY', 2,'Sugarland',5);Insert Into Project_t (Pname, PNum, PLocation, DNum)Values ('ProductZ', 3,'Houston',5);Insert Into Project_t (Pname, PNum, PLocation, DNum)Values ('Computerization', 10,'Stafford',4);Insert Into Project_t (Pname, PNum, PLocation, DNum)Values ('Reorganization', 20,'Houston',1);Insert Into Project_t (Pname, PNum, PLocation, DNum)Values ('Newbenefits', 30,'Stafford',4);

Alter Table Project_tAdd Constraint Project_pkPrimary Key (PNum);

Page 12: Project_2CIS405(GroupProject)

12

Alter Table Project_tAdd Constraint Project_t_dnum_fk Foreign key (dnum) references lngo12.DEPARTMENT_t (dnum);

Database Creation Script for Dependent Table CREATE TABLE DEPEN_T

(

ESSN NUMBER(9),

DEPENDENT_NAME VARCHAR2(14),

SEX VARCHAR2(3),

BDATE DATE,

RELATIONSHIP VARCHAR2(12)

constraint depen_pk primary key (ESSN,dependent_name),

constraint depen_ESSN_fk foreign key (ESSN) references emp_t(ESSN));

INSERT INTO DEPEN_T VALUES

(333445555,'ALICE','F','05-APR-76','DAUGHTER');

INSERT INTO DEPEN_T VALUES

(333445555,'THEODORE','M','25-OCT-73','SON');

INSERT INTO DEPEN_T VALUES

(333445555,'JOY','F','03-MAY-48','SPOUSE');

INSERT INTO DEPEN_T VALUES

(987654321,'ABNER','M','29-FEB-32','SPOUSE');

INSERT INTO DEPEN_T VALUES

(123456789,'MICHAEL','M','01-JAN-78','SON');

INSERT INTO DEPEN_T VALUES

(123456789,'ALICE','F','31-DEC-78','DAUGHTER');

INSERT INTO DEPEN_T VALUES

(123456789,'ELIZABETH','F','05-MAY-57','SPOUSE');

Page 13: Project_2CIS405(GroupProject)

13

Database Creation Script for Works On Table

CREATE TABLE WorksOn

(ESSN NUMBER(9) NOT NULL, PNO NUMBER(11), Hour NUMBER(6));

INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (123456789,1,32.5);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (123456789,2,7.5);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (666884444,3,40);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (453453453, 1, 20);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (453453453, 2, 20);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (333445555, 2, 10);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (333445555, 3, 10);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (333445555, 10, 10);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (333445555, 20, 10);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (999887777, 30, 30);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (999887777, 10, 10);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (987987987, 10, 10);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (987987987, 30, 35);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (987654321, 30, 20);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (987654321, 20, 15);INSERT INTO WorksOn (ESSN, PNO, Hour) VALUES (888665555, 20, null);

Page 14: Project_2CIS405(GroupProject)

14

ALTER TABLE WorksOnADD CONSTRAINT WorksOn_PKPRIMARY KEY (ESSN, PNO);

ALTER TABLE WorksOnADD CONSTRAINT WorksOn_fk1Foreign KEY (PNO) references jwu32.Project_t (PNUM);

Page 15: Project_2CIS405(GroupProject)

15

ALTER TABLE WorksOnADD CONSTRAINT WorksOn_fkForeign KEY (ESSN) references amedin62.emp_t (ESSN);

Page 16: Project_2CIS405(GroupProject)

16

Database Structure

DDL, Department Table and Employee Table, Department Location Table, Project Table, Dependents Table, Work On Table (In Order)

Page 17: Project_2CIS405(GroupProject)

17

Database Instance

DDL, Department Table and Employee Table, Department Location Table, Project Table, Dependents Table, Work On Table (In Order)

Page 18: Project_2CIS405(GroupProject)

18

Testing Database

VIEW

CREATE VIEW emp_depentAS SELECT FName, Dependent_Name, RelationshipFROM amedin62.emp_t, amedin62.depen_t

HAVING

SELECT pnum, pname, COUNT(*)FROM jwu32.project_t, workson

WHERE pnum = pnoGROUP BY pnum, pnameHAVING COUNT (*) > 1;

Group By

SELECT Pnum, Pname, COUNT (*)FROM jwu32.Project_t, jbarill.WorksOnWHERE Pnum = pno AND dnum = 4

Page 19: Project_2CIS405(GroupProject)

19

GROUP BY Pnum, Pname;

Outer JoinSELECT e.fname, e.lname, s.fname, s.lname FROM amedin62.emp_t e, amedin62.emp_t sWHERE e.superssn = s.essn (+);

Insert Statement

INSERT into emp_t values('John','E','Doe',098765432,'19-FEB-93','M',60000,null,1);

Page 20: Project_2CIS405(GroupProject)

20

Delete Statement

DELETE FROM EMP_T WHERE LNAME = 'Doe';

Update Statement

UPDATE EMP_TSET SALARY = 40000WHERE FNAME = 'JOHN';