Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Read the following scenario carefully: Banyon Corporation currently keeps track

ID: 3845577 • Letter: R

Question

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. Expert Answer

hrase actually is a very good way to remember the order of the normal forms: wear to construct my tables so that all non-key columns are dependent on This is INF) the key This is 2NF) the whole key, and nothing but the key [This is 3NF and BCNF) o help me Codd! Process for Putting a Relation into BCNF 1. Identify every functional dependency 2. Identify every candidate key 3. If there is a functional dependency that has a determinant that is not a candidate key: A. Move the columns of that functional dependency into a new relation. B. Make the determinant of that functional dependency the primary key of the new relation. C. Leave a copy of the determinant as a foreign key in the original relation. between D. Create a referential integrity constraint the original relation and the new relation. 4. Repeat step 3 until every determinant of every relation is a candidate key. Note: In step 3, if there is more than one such functional dependency, start with the one with the most columns.

Explanation / Answer

1.a An insertion anomaly is the inability to add data to the database due to absence of other data.

E.g., If a new employee is hired but not immediately assigned to a Department then this employee could not be entered into the database.

1.b A deletion anomaly is the unintended loss of data due to deletion of other data

E.g., If a department is supposed to be removed, it cannot be taken out till all the employee records are updated

1.c If there are multiple skills assigned to an Employee and his/her department is changed then the data should be updated in all the records. If the user performing the update does not realize the data is stored redundantly the update will not be done properly.

2. Multivalued dependency occurs when there are more than one independent multivalued attributes in a table.

In above scenario, dependencies are Employee information (Emp_name, Emp_phone) and Department information (Dept_name, Dept_phone, Dept_manager) and Skill details (Skill_name) all these sets are independent of each other and hence can be stored in separate tables.

phrase from the Banyon scenario to justify each MV dependency is "Department names are also unique. Knowing a dept_name you can determine the department’s phone and manager"

3. Functional dependencies

emp_id-> (Emp_name, Emp_phone,dept_name,skill_id,skill_level,skill_date)

Quote: "Knowing an emp_id, you can determine the corresponding employee name, phone and department in which the employee works. Knowing a dept_name you can determine the department’s phone and manager. 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."

4: Image is missing, unreachable