or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing
xxxxxxxxxx
Osnove podatkovnih baz - vaje 2.4.2020
Normalizacija
Dana je relacija \(R(S)\) z množico atributov \(S\) in funkcijskimi odvisnostmi oblike \(X \to A\), kjer je \(X \subseteq S\) in \(A \in S\).
Lastnosti funkcijskih odvisnosti:
Ključi:
Normalne oblike:
3NF: za vsako funkcijsko odvisnost \(X \to A\) velja
\[ A \in X \quad \lor \quad X \text{ vsebuje ključ} \quad \lor \quad A \text{ je del ključa.} \]
BCNF: za vsako funkcijsko odvisnost \(X \to A\) velja
\[ A \in X \quad \lor \quad X \text{ vsebuje ključ.} \]
Naloga 1
Dana je relacija \(R(ABCDE)\) s funkcijskimi odvisnostmi \(A \to B\), \(BC \to E\) in \(DE \to A\). Najdi vse ključe za \(R\). Ali je \(R\) v 3NF/BCNF?
Izpeljane funkcijske odvisnosti:
\[ \begin{aligned} A &\to B \\ BC &\to E \\ DE &\to A \\[1ex] AC &\to B \\ AC &\to C \\ AC &\to E \\[1ex] BCD &\to D \\[1ex] ACD &\to B \\ ACD &\to E \\[1ex] BCD &\to A \\ BCD &\to E \\[1ex] CDE &\to A \\ CDE &\to B \end{aligned} \]
Ključi: ACD, BCD, CDE
\(R\) je v 3NF, ni v BCNF.
Primer podatkov:
Anomalija spreminjanja: če popravimo Z v Z' v stolpcu E prve vrstice, moramo to ponoviti še v tretji vrstici.
V SQL lahko za to poskrbimo z določilom
ON UPDATE CASCADE
pri določitvi tujih ključev.Naloga 2
Imejmo sledeče atribute z ER diagrama letališčne baze:
Določi funkcijske odvisnosti med zgornjimi atributi, če lahko test na nekem letalu izvaja samo tisti tehnik, ki je specialist za model letala.
Pretvori shemo v 3NF. Ali se sklada s shemo, dobljeno iz ER diagrama?
\[ \begin{aligned} E &\to P & \text{ok} \\ T &\to I & \text{ok} \\ M &\to K & \text{ok} \\ R &\to M & \text{ok} \\ S &\to E & \text{3NF ok} \\ S &\to M & \text{ok} \\ EM &\to S & \text{3NF ok} \\ DERT &\to O & \text{BCNF} \\[1ex] DRT &\to IKM \\ DERT &\to IKMOPS \\ DRST &\to EIKMOP \end{aligned} \]
Ključi: DERT, DRST
Naloga 3
Dane so sledeče podrelacije relacije \(R(ABCDEFGHI)\) skupaj s funkcijskimi odvisnostmi.
Za vsak primer ugotovi, ali je podrelacija v BCNF, in če ni, jo pretvori v BCNF.
Ključ: ACE
Ključ: AB
3., 4., 5. so v BCNF.
Naloga 4
Dana je relacija \(R(ABCD)\) in sledeče množice funkcijskih odvisnosti.
Za vsako ugotovi, v kateri normalni obliki je \(R\), in jo pretvori v BCNF.
Ključ: B; ni v 3NF
Ključ: BD; ni v 3NF
Ključa: ABC, BCD; je v 3NF, ni v BCNF
Ključ: A, ni v 3NF
Ključi: AB, AD, BC, CD; je v 3NF, ni v BCNF