Boyce-Coddova normální forma

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Boyce-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,[1] že definice BCNF se prvně objevila v článku od Ian-a Heath-a už v roce 1971.[2]

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[editovat | editovat zdroj]

Každá relace, která je v BCNF je zároveň ve 3. normální formě; naopak relace, která je ve 3. normální formě nemusí být v BCNF, a to pokud platí tyto skutečnosti:

  • v relaci existuje více kandidátních klíčů,
  • všechny kandidátní klíče jsou složené ze dvou nebo více atributů,
  • existuje takový atribut, který je společný pro všechny kandidátní klíče.

Příklad[editovat | editovat zdroj]

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
Rezervace kurtu
Court Start Time End Time Rate Type
1 09:30 10:30 SAVER
1 11:00 12:00 SAVER
1 14:00 15:30 STANDARD
2 10:00 11:30 PREMIUM-B
2 11:30 13:30 PREMIUM-B
2 15:00 16:30 PREMIUM-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í.

Ohodnocení
Rate Type Court Member Flag
SAVER 1 Yes
STANDARD 1 No
PREMIUM-A 2 Yes
PREMIUM-B 2 No
Rezervace kurtu
Rate Type Start Time End Time
SAVER 09:30 10:30
SAVER 11:00 12:00
STANDARD 14:00 15:30
PREMIUM-B 10:00 11:30
PREMIUM-B 11:30 13:30
PREMIUM-A 15:00 16:30


Reference[editovat | editovat zdroj]

  1. Date, C.J. Database in Depth: Relational Theory for Practitioners. O'Reilly (2005), p. 142.
  2. Heath, I. "Unacceptable File Operations in a Relational Database." Proc. 1971 ACM SIGFIDET Workshop on Data Description, Access, and Control, San Diego, Calif. (November 11th–12th, 1971).