12.05.2015 Views

Relational Database Design.cwk (WP)

Relational Database Design.cwk (WP)

Relational Database Design.cwk (WP)

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

This is called a transitive dependency because the primary key<br />

determines professor_name indirectly - i.e. through another<br />

attribute (faculty_id).<br />

c) Any non-BCNF scheme can be decomposed into BCNF schemes<br />

by factoring out the attribute(s) that are transitively-dependent on<br />

the primary key, and putting them into a new scheme along with<br />

the attribute(s) they depend on.<br />

Example: We decompose section to<br />

section(department, course_number, section, days,<br />

time,room,faculty_id)<br />

professor(faculty_id, professor_name)<br />

E. Beyond 3NF/BCNF there are further normal forms called 4NF, and 5NF<br />

that we won't discuss here, but do discuss in the DBMS course. We aim<br />

to ensure that every database design we produce is in the highest normal<br />

form (generally at least BCNF, but often higher).<br />

For now, we'll stop at BCNF - which can be summarized by the following<br />

rule:<br />

Every attribute depends on the key, the whole key, and nothing but the<br />

key<br />

IV. Integrity Constraints<br />

A. One of the advantages of using a DBMS rather than accessing files<br />

directly is that it is possible, when setting up a database, to specify various<br />

integrity constraints on the data that are enforced for all accesses to the<br />

data.<br />

Data integrity is concerned with ensuring the ACCURACY of the data. In<br />

particular, the concern is with protecting the data from ACCIDENTAL<br />

inaccuracy, due to causes like:<br />

1. Data entry errors<br />

2. System crashes<br />

3. Anomalies due to concurrent and/or distributed processing<br />

13

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!