Answered! Read the following scenario carefully: Banyon Corporation currently keeps track of employee data in a spreadsheet…

Read the following scenario carefully: Banyon Corporation currently keeps track of employee data in a spreadsheet table. However, they see that the single-table approach is not working well since there is duplication of data and various anomalies arise as new rows are inserted, old rows deleted, and current rows updated. Here are the current column headers for Banyon’s spreadsheet table,

Employees. EMPLOYEES (Emp_id, Emp_name, Emp_phone, Dept_name, Dept_phone, Dept_manager, Skill_id, Skill_name, Skill_date, Skill_level)

Banyon has decided to use a database rather than a single-table spreadsheet. They conducted the following analysis. Each employee is identified by a unique emp_id. Knowing an emp_id, you can determine the corresponding employee name, phone and department in which the employee works. Department names are also unique. Knowing a dept_name you can determine the department’s phone and manager. Each employee possesses a set of skills. Employees must periodically update each skill by passing a test that certifies a certain skill level at a given point in time (skill_date). A skill can be identified by a unique skill_id. However, skill_level and skill_date are associated with a specific employee’s certification on a given skill.

1) Imagine several rows of data in the existing Employees table. a) Give an example of an insertion anomaly b) Give an example of a deletion anomaly. c) Give an example of an update anomaly.

2) List any multivalued dependencies you have identified. Quote a specific line or phrase from the Banyon scenario to justify each MV dependency

3) List any functional dependencies you have identified. Quote a specific line or phrase from the Banyon scenario to justify each functional dependency.

4) Refer to Figure 3-19. Use the process defined in Figure 3-19 to put the Employees table into BCNF. Document each step you take by referring to the appropriate step in Figure 3-19

Process for Putting a Relation into BCNF
Identify all functional dependencies in the relation
Identify every candidate key in the relation.
If there is a functional dependency that has a determinant that is not a candidate key:

Move the columns of the functional dependency of the determinant that is not a candidate key to a new relation.

Make the determinant of that functional dependency the primary key of the new relation.

Leave a copy of the determinant in the original relation as a foreign key.

Create a referential integrity constraint between the relations.

Repeat step 3 until every determinant of every relation is a candidate key

Expert Answer

As we all knew that for BCNF we have following conditions:

Any relation “R” is set to be BCNF if all of its dependencies A–>B follow one of the below given coditions:

i) A—>B having trivial functional dependency. It means B should be subset of A.
ii) A should be the super key of the Schema R

So taking care of the above conditions we can have following tables:

1) EMPLOYEES_TABLE(Emp_id, Emp_name, Emp_phone, Dept_Id)

Here in the above table we have following functional dependencies:

i) Emp_id—>Emp_name
ii) Emp_name—>Emp_phone

Here Emp_id is working as primary key and Dept_Id is working as foreign key.
(Emp_name, Emp_phone) is the candidate key

2) DEPARTMENT_TABLE(Dept_Id, Dept_name, Dept_manager, Dept_phone)

Here in the above table we have following functional dependencies:

i) Dept_Id—->Dept_name
ii) Dept_name—->Dept_manager
iii)Dept_name—->Dept_phone

Here Dept_Id is working as primary key.

(Dept_name, Dept_phone) is the candidate key

3) SKILLS_TABLE(Skill_id, Skill_name, Skill_date, Skill_level, Emp_id)

Here in the above table we have following functional dependencies:

i) Skill_id—-> Skill_name

Here Skill_id is working as primary key and Emp_id is foreign key.

The various sql statements are as follows:

Table creation can be done as follows. For example sql query for EMPLOYEES_TABLE can be:

CREATE TABLE EMPLOYEES_TABLE
(Emp_name VARCHAR2(50),
Emp_id NUMBER (10),
Emp_phone NUMBER (10),
Dept_Id NUMBER (10)
);

For Data insertaion we can use the following syntax:

INSERT INTO table_name (col1,col2,col3,…) VALUES (val1,val2,val3,…);

Here in above syntax you can replace table_name, column name and values.

The five query scenarios that may be useful are:

i) Select * from table_name (This query can be used to select all the data of table)

ii) delete from table_name (This query is for deleting a record from table)

iii) insert into table_name (This query is to insert into table)

iv) UPDATE table_name SET col1=val1,col2=val2,… WHERE some_col=some_val; (This query to update the table)

v) Select query with “Where” Clause (This query is to apply any condition)

Still stressed from student homework?
Get quality assistance from academic writers!