Changes between Version 1 and Version 2 of normalization


Ignore:
Timestamp:
08/31/25 16:54:20 (2 days ago)
Author:
221046
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • normalization

    v1 v2  
    1 = Нормализација
     1= Нормализација на базата =
    22
    3 Функциски зависности (FD)
    4 FD = {
     3== Нормални форми по релации ==
    54
    6 # Track
    7 track_id → name, album_id, media_type_id, genre_id, composer, milliseconds, bytes
     5||= Релација =||= Клуч(еви) =||= Функциски зависности (ФЗ) =||= Нормална форма =||
     6||'''Track(track_id, name, album_id, media_type_id, genre_id, composer, milliseconds, bytes)'''||track_id||track_id → {name, album_id, media_type_id, genre_id, composer, milliseconds, bytes}||BCNF||
     7||'''Album(album_id, title, artist_id)'''||album_id||album_id → {title, artist_id}||BCNF||
     8||'''Artist(artist_id, name)'''||artist_id||artist_id → name||BCNF||
     9||'''Genre(genre_id, name)'''||genre_id||genre_id → name||BCNF||
     10||'''MediaType(media_type_id, name)'''||media_type_id||media_type_id → name||BCNF||
     11||'''Price(price_id, value, date, track_id)'''||price_id||price_id → {value, date, track_id}||BCNF (ако price_id е surrogate); 3NF ако клуч е (track_id, date)||
     12||'''InvoiceLine(invoice_line_id, invoice_id, track_id, quantity)'''||invoice_line_id (и можен (invoice_id, track_id))||invoice_line_id → {invoice_id, track_id, quantity}; (invoice_id, track_id) → quantity||BCNF (со surrogate); 3NF (ако композитен клуч)||
     13||'''Invoice(invoice_id, customer_id, invoice_date, billing_address, billing_city, billing_state, billing_country, billing_postal_code, total)'''||invoice_id||invoice_id → {customer_id, invoice_date, billing_address, billing_city, billing_state, billing_country, billing_postal_code, total}||BCNF||
     14||'''Customer(customer_id, first_name, last_name, company, support_rep_id, address, city, state, country, postal_code, phone, fax, email)'''||customer_id||customer_id → {first_name, last_name, company, support_rep_id, address, city, state, country, postal_code, phone, fax, email}||BCNF||
     15||'''Employee(employee_id, first_name, last_name, title, reports_to, birth_date, hire_date, address, city, state, country, postal_code, phone, fax, email)'''||employee_id||employee_id → {first_name, last_name, title, reports_to, birth_date, hire_date, address, city, state, country, postal_code, phone, fax, email}||BCNF||
     16||'''Playlist(playlist_id, name)'''||playlist_id||playlist_id → name||BCNF||
     17||'''PlaylistTrack(playlist_track_id, playlist_id, track_id)'''||playlist_track_id (и можен (playlist_id, track_id))||playlist_track_id → {playlist_id, track_id}; (playlist_id, track_id) → playlist_track_id||BCNF||
    818
    9 # Album
    10 album_id → title, artist_id
    11 
    12 # Artist
    13 artist_id → name
    14 
    15 # Genre
    16 genre_id → name
    17 
    18 # Media Type
    19 media_type_id → name
    20 
    21 # Customer (со враќање на personal info атрибути)
    22 customer_id → first_name, last_name, company, support_rep_id,
    23                address, city, state, country, postal_code, phone, fax, email
    24 
    25 # Employee (со враќање на personal info атрибути)
    26 employee_id → first_name, last_name, title, reports_to, birth_date, hire_date,
    27                address, city, state, country, postal_code, phone, fax, email
    28 
    29 # Invoice
    30 invoice_id → customer_id, invoice_date, billing_address, billing_city, billing_state,
    31               billing_country, billing_postal_code, total
    32 
    33 # InvoiceLine
    34 invoice_line_id → invoice_id, track_id, quantity
    35 
    36 # Playlist
    37 playlist_id → name
    38 
    39 # PlaylistTrack
    40 playlist_track_id → playlist_id, track_id
    41 
    42 # Price
    43 price_id → value, date, track_id
    44 
    45 }
    46 Канонска покривање (Fc)
    47 Fc = {
    48 
    49 track_id → name,
    50 track_id → album_id,
    51 track_id → media_type_id,
    52 track_id → genre_id,
    53 track_id → composer,
    54 track_id → milliseconds,
    55 track_id → bytes,
    56 
    57 album_id → title,
    58 album_id → artist_id,
    59 
    60 artist_id → name,
    61 
    62 genre_id → name,
    63 
    64 media_type_id → name,
    65 
    66 customer_id → first_name,
    67 customer_id → last_name,
    68 customer_id → company,
    69 customer_id → support_rep_id,
    70 customer_id → address,
    71 customer_id → city,
    72 customer_id → state,
    73 customer_id → country,
    74 customer_id → postal_code,
    75 customer_id → phone,
    76 customer_id → fax,
    77 customer_id → email,
    78 
    79 employee_id → first_name,
    80 employee_id → last_name,
    81 employee_id → title,
    82 employee_id → reports_to,
    83 employee_id → birth_date,
    84 employee_id → hire_date,
    85 employee_id → address,
    86 employee_id → city,
    87 employee_id → state,
    88 employee_id → country,
    89 employee_id → postal_code,
    90 employee_id → phone,
    91 employee_id → fax,
    92 employee_id → email,
    93 
    94 invoice_id → customer_id,
    95 invoice_id → invoice_date,
    96 invoice_id → billing_address,
    97 invoice_id → billing_city,
    98 invoice_id → billing_state,
    99 invoice_id → billing_country,
    100 invoice_id → billing_postal_code,
    101 invoice_id → total,
    102 
    103 invoice_line_id → invoice_id,
    104 invoice_line_id → track_id,
    105 invoice_line_id → quantity,
    106 
    107 playlist_id → name,
    108 
    109 playlist_track_id → playlist_id,
    110 playlist_track_id → track_id,
    111 
    112 price_id → value,
    113 price_id → date,
    114 price_id → track_id
    115 }
    116 
     19== Заклучок ==
     20  * Сите релации се барем во **3-та нормална форма (3NF)**.
     21  * Повеќето се дури во **BCNF**.
     22  * Единствени забелешки:
     23    * InvoiceLine – зависи дали дозволуваш повеќе исти песни во иста фактура.
     24    * Price – зависи дали цените се временски зависни (во тој случај клуч е (track_id, date)).