Skip to content
This repository has been archived by the owner on Jan 28, 2025. It is now read-only.

Latest commit

 

History

History
129 lines (82 loc) · 2.48 KB

НОРМАЛИЗАЦИЯ.md

File metadata and controls

129 lines (82 loc) · 2.48 KB

Функциональные зависимости

character

id → name

id → type_id → type_name

id → birthday

id → history

id → sex_id → sex_name

id → group_id → [location_id, admin_id, group_name]

id → favor_id → [sex_id, age_min, age_max]

history → birthday (и другие аттрибуты)

group

id → admin_id

id → location_id

id → name

favor

id → sex_id

id → age_min

id → age_max

court

id → verdict

id → date

id → defendant_id (character id)

id → group_id

id → location_id

location

id → lat

id → lon

id → name

id → is_place_of_living

passes

character_id → character

location_id → location

primary key = character_id + location_id

murder

id → killer_id → character

id → victim → character

id → description

id → date

vampire_to_servant

vampire_id → character

servant_id → character

primary key = vampire_id + servant_id

location_history

character_id → character

location_id → location

(character_id, location_id) → visit_time

# ВОТ ЭТО ВЫГЛЯДИТ СТРАННО !!! Но это неправда!

primary key = (character_id, visit_time)

(character_id, visit_time) → location_id

1НФ

  • Отношение, на пересечении каждой строки и столбца — одно значение.

2НФ

  • Отношение в 1НФ

  • Атрибуты, не входящие в первичный ключ, в полной функциональной зависимости от первичного ключа отношения.

3НФ

  • Отношение в 1НФ и 2НФ

  • Все атрибуты, которые не входят в первичный ключ, не находятся в транзитивной функциональной зависимости от первичного ключа.

Проблема

history в таблице character - not null unique => можно функционально определять другие аттрибуты => имея первичный ключ id можем иметь транзитивную зависимость.

Решение

В ходе обсуждения пришли к тому, что history может быть null, а значит не может определять другие аттрибуты.

ヽ༼ຈل͜ຈ༽ノ ПОБЕДА!