wiki:normalization

Version 2 (modified by 155036, 14 hours ago) ( diff )

--

Нормализација и подобрувања на дизајнот

Во оваа секција е прикажана нормализацијата на постоечкиот ER модел до трета нормална форма (3NF), за да се отстранат зависностите, се избегне дуплирање на податоци и да се подобри интегритетот.

actors(actor_id, actor_code, actor_name, country_code, type_code)

Функционални зависности: actor_idactor_code, actor_name, country_code, type_code country_codecountry_name type_codetype_description

1NF: Сите атрибути се атомски 2NF: Сите не-клучни атрибути зависат целосно од примарниот клуч 3NF: Постои транзитивна зависност → actor_idcountry_codecountry_name

Декомпозиција: actors(actor_id, actor_code, actor_name, country_code, type_code) countries(country_code, country_name) actor_types(type_code, type_description)

locations(location_id, full_name, country_code, adm1_code, latitude, longitude, feature_id)

Функционални зависности: location_idfull_name, country_code, adm1_code, latitude, longitude, feature_id country_codecountry_name

1NF: Атомски вредности 2NF: Зависности од целиот клуч 3NF: Транзитивна зависност преку country_code

Декомпозиција: locations(location_id, full_name, country_code, adm1_code, latitude, longitude, feature_id) countries(country_code, country_name)

subscription(subscription_id, user_id, plan_id, start_date, end_date, status)

Функционални зависности: subscription_iduser_id, plan_id, start_date, end_date, status statusstatus_description

1NF: Атомски атрибути 2NF: Сите атрибути зависат од клучот 3NF: Транзитивна зависност преку status

Декомпозиција: subscription(subscription_id, user_id, plan_id, start_date, end_date, status_code) statuses(status_code, status_description)

notifications(notification_id, user_id, event_id, notification_date, status)

Функционални зависности: notification_iduser_id, event_id, notification_date, status statusstatus_description

1NF: Атомски вредности 2NF: Зависности од целиот клуч 3NF: Транзитивна зависност преку status

Декомпозиција: notifications(notification_id, user_id, event_id, notification_date, status_code) statuses(status_code, status_description)

Нови релации по нормализација

CREATE TABLE countries (

country_code VARCHAR(5) PRIMARY KEY,

country_name VARCHAR(100)

);

CREATE TABLE actor_types (

type_code VARCHAR(10) PRIMARY KEY,

type_description VARCHAR(100)

);

CREATE TABLE statuses (

status_code VARCHAR(20) PRIMARY KEY,

status_description TEXT

);

Финален дизајн (за actors)

CREATE TABLE actors (

actor_id SERIAL PRIMARY KEY,

actor_code VARCHAR(10) NOT NULL,

actor_name VARCHAR(100) NOT NULL,

country_code VARCHAR(5),

type_code VARCHAR(10),

FOREIGN KEY (country_code) REFERENCES countries(country_code),

FOREIGN KEY (type_code) REFERENCES actor_types(type_code)

);

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.