wiki:Normalization

Version 7 (modified by 211101, 10 days ago) ( diff )

--

Нормализација

Денормализирана форма

Форма во кој има една табела во која се внесени сите ентитети и нивни релации помеѓу себе, без никакви правила

user_id user_name email password transaction_account_id account_name balance transaction_id transaction_name amount net_amount date transaction_breakdown_id spent_amount earned_amount tag_id tag_name
1 james james@… $2y$10$rcqLdIzMcYfmGFWCP3kix.JNTOzjIp0xVehMd11wzaanAXUDFLQMu 1, 2 credit card, cash 5000, 1200 1, 2 electricity bill, burger -1800, -800 -1800, -200 18:03:25 Sep 26, 2025, 12:43:00 Sep 26, 2025 1,2 -1800, -800 0, 600 1, 2 bills, food
2 anita anita@… $2y$10$CsSsqA.FFhBR/TWCZCUWYOPxYA.HmGb7ULQPgJGhv3vQS2xRqluYm 1 debit card 3200 1 nail polish -200 -200 19:31:32 Sep 12 2025 1 -200 0 1 beauty

Прва нормална форма

Форма во која повторно има една табела, но овојпат, таа е ограничена со следниве работи:

  • Подредувањето на редовите не претставува никакво значење
  • Во ќелиите на секоја колона има по една вредност
  • Не се мешаат типови на податоци во една ќелија
  • Табелата има примарен композитен клуч(user_id, transaction_id, transaction_account_id, transaction_breakdown_id)
  • Нема повторувачки групи, сите што биле во денормализираната форма сега се во посебен ред

user_id user_name email password transaction_account_id account_name balance transaction_id transaction_name amount net_amount date transaction_breakdown_id spent_amount earned_amount tag_id tag_name
1 james james@… $2y$10$rcqLdIzMcYfmGFWCP3kix.JNTOzjIp0xVehMd11wzaanAXUDFLQMu 1 credit card 5000 1 electricity bill -1800 -1800 18:03:25 Sep 26, 2025 1 -1800 0 1 bills
1 james james@… $2y$10$rcqLdIzMcYfmGFWCP3kix.JNTOzjIp0xVehMd11wzaanAXUDFLQMu 2 cash 1200 2 burger -800 -200 12:43:00 Sep 26, 2025 2 -800 600 2 food
2 anita anita@… $2y$10$CsSsqA.FFhBR/TWCZCUWYOPxYA.HmGb7ULQPgJGhv3vQS2xRqluYm 3 debit card 3200 3 nail polish -200 -200 19:31:32 Sep 12 2025 3 -200 0 3 beauty

Втора нормална форма

Форма која ги следи овие правила:

  • Веќе е во прва нормална форма
  • Секој од атрибутите кој не е клуч, зависи од целосниот примарен клуч - со тоа се спречуваат аномалии на внесување, бришење и менување

1

{ user_id } → {user_name, email, password}

USER
user_id user_name email password
1 james james@… $2y$10$rcqLdIzMcYfmGFWCP3kix.JNTOzjIp0xVehMd11wzaanAXUDFLQMu
2 anita anita@… $2y$10$CsSsqA.FFhBR/TWCZCUWYOPxYA.HmGb7ULQPgJGhv3vQS2xRqluYm

2

{transaction_account_id} → {account_name, balance, user_id}

{transaction_account_id} → {user_id} → {user_name, email}

TRANSACTION_ACCOUNT_WITH_USER_DATA
transaction_account_id account_name balance user_id user_name email
1 credit card 5000 1 james james@…
2 cash 1200 1 james james@…
3 debit card 3200 2 anita anita@…

3

{transaction_id} → {transaction_name, amount, net_amount, date, tag_id}

{transaction_id} → {tag_id} → {tag_name}

TRANSACTION_WITH_TAG_NAME
transaction_id transaction_name amount net_amount date tag_id tag_name
1 electricity bill -1800 -1800 18:03:25 Sep 26, 2025 1 bills
2 burger -800 -200 12:43:00 Sep 26, 2025 2 food
3 nail polish -200 -200 19:31:32 Sep 12 2025 3 beauty

4

{transaction_breakdown_id} → {transaction_id, transaction_account_id, spent_amount, earned_amount}

TRANSACTION_BREAKDOWN
transaction_breakdown_id transaction_id transaction_account_id spent_amount earned_amount
1 1 1 -1800 0
2 2 2 -800 600
3 3 3 -200 0

Трета нормална форма

Формава ги следи овие правила:

  • Веќе е во втора нормална форма
  • Се отргнуваат транзитивните функционални зависности, со тоа се овозможува сите атрибути кои не се клучеви да зависат само од примарниот клуч и од никој друг атрибут

1

{user_id} → {user_name, email, password}

USER
user_id user_name email password
1 james james@… $2y$10$rcqLdIzMcYfmGFWCP3kix.JNTOzjIp0xVehMd11wzaanAXUDFLQMu
2 anita anita@… $2y$10$CsSsqA.FFhBR/TWCZCUWYOPxYA.HmGb7ULQPgJGhv3vQS2xRqluYm

2

{transaction_account_id} → {account_name, balance, user_id}

TRANSACTION_ACCOUNT
transaction_account_id account_name balance user_id
1 credit card 5000 1
2 cash 1200 1
3 debit card 3200 2

3

{transaction_id} → {transaction_name, amount, net_amount, date}

TRANSACTION
transaction_id transaction_name amount net_amount date
1 electricity bill -1800 -1800 18:03:25 Sep 26, 2025
2 burger -800 -200 12:43:00 Sep 26, 2025
3 nail polish -200 -200 19:31:32 Sep 12 2025

4

{transaction_breakdown_id} → {transaction_id, transaction_account_id, spent_amount, earned_amount}

TRANSACTION_BREAKDOWN
transaction_breakdown_id transaction_id transaction_account_id spent_amount earned_amount
1 1 1 -1800 0
2 2 2 -800 600
3 3 3 -200 0

5

{tag_id} → {tag_name}

TAG
tag_id tag_name
1 bills
2 food
3 beauty

6

{transaction_id, tag_id} → {}

TAG_ASSIGNED_TO_TRANSACTION
transaction_id tag_id
1 1
2 2
3 3

Верзија 1

Note: See TracWiki for help on using the wiki.