project_2cis405(groupproject)
TRANSCRIPT
1
CIS 405 Project
Oracle Database Development
Juan Barillas
Arturo Medina
Larry Ngo
James Wu
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
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.
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 ____ ____ ____
5
ER diagram with 1) entity types, 2) relationship types, 3) keys, 4) cardinality ratio and 5) connection.
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
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
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');
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);
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);
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);
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');
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);
14
ALTER TABLE WorksOnADD CONSTRAINT WorksOn_PKPRIMARY KEY (ESSN, PNO);
ALTER TABLE WorksOnADD CONSTRAINT WorksOn_fk1Foreign KEY (PNO) references jwu32.Project_t (PNUM);
15
ALTER TABLE WorksOnADD CONSTRAINT WorksOn_fkForeign KEY (ESSN) references amedin62.emp_t (ESSN);
16
Database Structure
DDL, Department Table and Employee Table, Department Location Table, Project Table, Dependents Table, Work On Table (In Order)
17
Database Instance
DDL, Department Table and Employee Table, Department Location Table, Project Table, Dependents Table, Work On Table (In Order)
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
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);
20
Delete Statement
DELETE FROM EMP_T WHERE LNAME = 'Doe';
Update Statement
UPDATE EMP_TSET SALARY = 40000WHERE FNAME = 'JOHN';