Boyceho–Coddova normální forma

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,[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

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íčů,
  • 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
Rezervace kurtu
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í.

Ohodnocení
Rate TypeCourtMember Flag
SAVER1Yes
STANDARD1No
PREMIUM-A2Yes
PREMIUM-B2No
Rezervace kurtu
Rate TypeStart TimeEnd Time
SAVER09:3010:30
SAVER11:0012:00
STANDARD14:0015:30
PREMIUM-B10:0011:30
PREMIUM-B11:3013:30
PREMIUM-A15:0016:30

Reference

  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).
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.