Version 1 (modified by 2 days ago) ( diff ) | ,
---|
Нормализација и подобрувања на дизајнот
Во оваа секција е прикажана нормализацијата на целокупниот ER модел до трета нормална форма (3NF), за да се отстранат зависностите, се избегне дуплирање на податоци и да се подобри интегритетот.
Објаснување на нормализацијата
ННормализацијата беше извршена како анализа на целиот модел составен од 9 табели, при што се разгледуваа зависностите помеѓу табелите, а не само во рамки на секоја одделно. На тој начин се овозможи откривање на заеднички функционални зависности и елиминирање на можни дуплирани атрибути.
Клучни подобрувања:
-Централизација на времетраењето на пакетите преку табелата tip_vremetranje. -Подобрување на интегритетот на податоците со користење на foreign keys помеѓу clenstvo, clenovi, paketi и tip_vremetranje. -Елиминирање на можни транзитивни зависности (пример: clenovi → clenstvo → paketi). -Воведување на поврзувачки табели за многу-на-многу релации (trenira, raboti).
Со оваа нормализација до 3NF, се подобрува конзистентноста, се намалува дуплирањето на податоци и се поедноставува одржувањето на базата.
Анализа по табела
clenovi(clenid, ime, prezime, email, broj_poseti)
Функционални зависности:
clenid → ime, prezime, email, broj_poseti
email → clenid (уникатност)
1NF: Сите вредности се атомски.
2NF: Сите атрибути зависат од примарниот клуч.
3NF: Нема транзитивни зависности.
Декомпозиција: / (нема потреба)
paketi(paketid, ime, cena)
Функционални зависности:
paketid → ime, cena
1NF: Атомски вредности.
2NF: Сите зависат од примарниот клуч.
3NF: Нема транзитивни зависности.
Декомпозиција: / (нема потреба)
tip_vremetranje(vremetraenjeid, vremetraenjedenovi, ime)
Функционални зависности:
vremetraenjeid → vremetraenjedenovi, ime
1NF: Атомски вредности.
2NF: Сите зависности се од примарниот клуч.
3NF: Нема транзитивни зависности.
Декомпозиција: / (нема потреба)
clenstvo(clenstvoid, clenid, paketid, vremetraenjeid, start_datum)
Функционални зависности:
clenstvoid → clenid, paketid, vremetraenjeid, start_datum
clenid → ime, prezime, email (транзитивна зависност ако би биле во иста табела)
1NF: Атомски вредности.
2NF: Сите зависности се од примарниот клуч.
3NF: Со референтни клучеви се елиминира транзитивноста.
Декомпозиција:
clenstvo(clenstvoid, clenid, paketid, vremetraenjeid, start_datum)
clenovi(clenid, ime, prezime, email, broj_poseti)
paketi(paketid, ime, cena)
tip_vremetranje(vremetraenjeid, vremetraenjedenovi,ime)
lokacii(lokacijaid, ime)
Функционални зависности:
lokacijaid → ime
1NF/2NF/3NF: Веќе е во 3NF.
poseti(posetaid, clenid, lokacijaid, datum)
Функционални зависности:
posetaid→ clenid, lokacijaid, datum
1NF: Атомски вредности.
2NF: Сите зависности од клучот.
3NF: Нема транзитивни зависности.
vraboteni(vrabotenid, ime, pozicija)
Функционални зависности:
vrabotenid → ime, pozicija
1NF/2NF/3NF: Веќе е нормализирана.
trenira(clenid, vrabotenid)
Функционални зависности:
(clenid, vrabotenid) → { } (само примарен клуч)
1NF/2NF/3NF: Релација за многу-на-многу.
raboti(vrabotenid, lokacijaid)
Функционални зависности:
(vrabotenid, lokacijaid) → { }
1NF/2NF/3NF: Веќе е нормализирана.
Нови релации по нормализација
Во однос на првичниот дизајн, не беше потребно да се воведат дополнителни табели освен оние што веќе постојат (tip_vremetranje за времетраење, trenira и raboti за многу-на-многу врски).
CREATE TABLE tip_vremetranje (
vremetraenjeid SERIAL PRIMARY KEY,
vremetraenjedenovi INT NOT NULL,
ime VARCHAR(50) NOT NULL
);
Ова овозможува поголема флексибилност и интегритет на податоците.
Attachments (5)
- normlizacija_ddl_schema.sql (2.0 KB ) - added by 2 days ago.
- normlizacija_ddl_schema.2.sql (2.1 KB ) - added by 2 days ago.
- normlizacija_ddl_schema.3.sql (2.1 KB ) - added by 2 days ago.
- SQL queries.sql (2.0 KB ) - added by 33 hours ago.
- SQL_queries.sql (2.0 KB ) - added by 33 hours ago.
Download all attachments as: .zip