Boyceho–Coddova normální forma

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

Boyceho-Coddova normální forma (BCNF) je jednou z normálních forem používaných při normalizaci databáze.

BCNF byla vytvořena v roce 1974 Raymondem Boycem a Edgarem Coddem, aby odstranila některé anomálie, které se vyskytují v relacích, které jsou ve 3NF. Chris Date upozornil, že definice BCNF se prvně objevila v článku od Ian-a Heath-a už v roce 1971.

Definice BCNF: Relace R je v BCNF tehdy a jen tehdy, když pro každou netriviální závislost X → Y, kde X a Y jsou množiny atributů a zároveň Y není podmnožinou X, platí, že X je nadmnožinou nějakého klíče, nebo X je klíčem relace R. Jinak řečeno relace R je v BCNF tehdy a jen tehdy, když každý determinant funkční závislosti v relaci R je zároveň kandidátním klíčem relace R.

Relace v 3NF, která není v BCNF

Každá relace, která je v BCNF je zároveň ve 3. normální formě; naopak relace, která je ve 3. +more normální formě nemusí být v BCNF, a to pokud platí tyto skutečnosti: * v relaci existuje více kandidátních klíčů, * existuje takový atribut, který je společný pro všechny kandidátní klíče.

Příklad

Následující tabulka eviduje rezervace dvou tenisových kurtů. Současně máme (konvencí) definovaná tato ohodnocení (Rate Type): * SAVER, pro kurt 1, sjednané členy klubu * STANDARD, pro kurt 1, sjednané nečleny klubu * PREMIUM-A, pro kurt 2, sjednané členy klubu * PREMIUM-B, pro kurt 2, sjednané nečleny klubu

CourtStart TimeEnd TimeRate Type
109:3010:30SAVER
111:0012:00SAVER
114:0015:30STANDARD
210:0011:30PREMIUM-B
211:3013:30PREMIUM-B
215:0016:30PREMIUM-A

Tato tabulka je v 3NF, ale není v BCNF. Příklad řešení, které BCNF splňuje, vytvořilo novou tabulku, která sjednocuje číslo kurtu a hodnocení. +more

Rate TypeCourtMember Flag
SAVER1Yes
STANDARD1No
PREMIUM-A2Yes
PREMIUM-B2No
[wiki_table=738f8a86].

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top