csnotes/cst363/lec/lec22.md
2019-03-15 01:25:45 -07:00

35 lines
990 B
Markdown

# lec22
## Functional Dependancy
If we have an attribute `a` that could produce `b,c,d` reliably everytime then we would only need to keep track of `a` instead of keeping track of all the repeats because the dependants depend on `a`.
Example:
```
building -> roomNumber
```
This one makes sense since we would likely be able to find duplicate room numbers in different buildings.
Most places have a name for each building however.
## BCNF
> Boyce Codd Normal Form
If we have a key which sources our redundancy we're ok because we can easily find all redundancies.
If we're not looking at a key then we could be in the middle of a dependancy nest.
Say we have a schema like `advisees(inst_id, student_id, student_name)`.
Student name depends on `student_id` so there's no reason to have it in the schema.
A schema follows BCNF if there's a non-trivial functional dependancy
* x -> y for r
* then x is a superkey for r
## Example
```
instructor_offices(inst_id, name, office)
```