| 9 | | == Идентификување на суперклучеви и нивните покривачи |
| | 9 | == Нормализација |
| | 10 | Првичниот дизајн не ја содржеше релацијата **Facility**. Наместо тоа, релацијата **Inventory** беше директно врзана со **Company**, според следниот модел:\\ |
| | 11 | |
| | 12 | Inventory(id, company_id, code, ...)\\ |
| | 13 | |
| | 14 | Функционалните зависности беа:\\ |
| | 15 | - id → {company_id, code, ...}\\ |
| | 16 | - code → id\\ |
| | 17 | - company_id → code \\ |
| | 18 | \\ |
| | 19 | Последната зависност company_id → code претставува проблем: левата страна (company_id) не е суперклуч, а детерминира друг атрибут. Ова е директно прекршување на условот за BCNF. |
| | 20 | |
| | 21 | **Доказ преку покривач:**\\ |
| | 22 | - (company_id)⁺ = {company_id, code} \\ |
| | 23 | → не го покрива целиот сет на атрибути во Inventory. \\ |
| | 24 | - Значи company_id не е суперклуч, а сепак детерминира code. \\ |
| | 25 | - Следува: Inventory **не е во BCNF**.\\ |
| | 26 | |
| | 27 | ---- |
| | 28 | |
| | 29 | == Декомпозиција за да се постигне BCNF |
| | 30 | |
| | 31 | За да се елиминира прекршувањето, воведовме нова релација **Facility**. \\ |
| | 32 | Сега добиваме:\\ |
| | 33 | \\ |
| | 34 | Facility(id, company_id, facility_name, code) \\ |
| | 35 | Inventory(id, facility_id, ...)\\ |
| | 36 | \\ |
| | 37 | Нови функционални зависности:\\ |
| | 38 | - Во Facility: \\ |
| | 39 | id → {company_id, facility_name, code} \\ |
| | 40 | code → id \\ |
| | 41 | → во двата случаи левата страна е клуч → Facility е во BCNF. \\ |
| | 42 | \\ |
| | 43 | - Во Inventory: \\ |
| | 44 | id → {facility_id, ...} \\ |
| | 45 | facility_id е уникатен → facility_id → id \\ |
| | 46 | → левата страна секогаш е клуч → Inventory е во BCNF.\\ |
| | 47 | |
| | 48 | Со оваа декомпозиција овозможивме и полесно скалирање на апликацијата во иднина, што воедно беше и наша цел. |
| | 49 | |
| | 50 | ---- |
| | 51 | |
| | 52 | == Идентификување на суперклучеви и нивните покривачи после нормализацијата |