wiki:Normalization

Version 6 (modified by 211561, 2 weeks ago) ( diff )

--

Users

USERS(id, name, email, password, is_admin)

id → name, email, password, is_admin

  • 1NF: Табелата е во 1NF бидејќи секое поле содржи атомски вредности и нема дупликат вредности.
  • 2NF: Табелата е во 2NF бидејќи сите атрибути зависат целосно од примарниот клуч и нема делумни релации.
  • BCNF: Табелата е во BCNF бидејќи секоја релација е целосно зависна од примарниот клуч и нема транзитивни релации.

Clients

CLIENTS(id, name, country, registration_number, tax_code, contact_person, phone_number, billing_address, shipping_address)

id → name, country, registration_number, tax_code, contact_person, phone_number, billing_address, shipping_address

  • 1NF: Табелата CLIENTS е во 1NF затоа што сите атрибути содржат атомски вредности и нема дупликат вредности. Адресата за наплата и испорака, и сите други атрибути се одвоени и не се повторуваат.
  • 2NF: Табелата е во 2NF затоа што сите атрибути зависат целосно од примарниот клуч id. Не постојат делумни релации, бидејќи сите атрибути се однесуваат на целиот ентитет (клиент).
  • BCNF: Табелата е во BCNF затоа што секоја релација е целосно зависна од примарниот клуч и нема транзитивни релации. Нема не-клучни атрибути кои зависат од друг не-клучен атрибут.

Во новата база на податоци, табелата CLIENTS ги заменува старите табели BUYER и RECEIVER. Оваа промена беше направена за да се поедностави структурата на базата и да се избегне двојна евиденција за истите ентитети. Наместо две посебни табели (една за купувачи и друга за примачи), сега и купувачите и примачите се чуваат во една табела, што е поефикасно и попрактично за управување со податоците.

BUYER и RECEIVER беа две различни табели, со различни атрибути за секој ентитет. Секој купувач имаше своја табела за информации поврзани со купувањето, а секој примач имаше посебна табела за податоците за испорака.

CLIENTS сега ја обединува оваа функционалност, бидејќи и купувачот и примачот може да бидат идентификувани како клиенти. Табелата CLIENTS вклучува целокупната информација за компаниите кои учествуваат во процесот на продажба и испорака, вклучувајќи и billing_address и shipping_address, кои се претходно разликувани помеѓу купувачот и примачот.

Transports

PRODUCERS(id, name, address, country, phone_number, email)

id → name, address, country, phone_number, email

  • 1NF: Табелата е во 1NF бидејќи секое поле содржи атомски вредности и нема дупликат вредности.
  • 2NF: Табелата е во 2NF бидејќи сите атрибути зависат целосно од примарниот клуч. Нема делумни релации.
  • BCNF: Табелата е во BCNF бидејќи секоја релација е целосно зависна од примарниот клуч и нема транзитивни релации.

Producers

PRODUCTS(id, name, description, hs_code, price, producer_id* (PRODUCERS), unit_of_measure)

id → name, description, hs_code, price, producer_id, unit_of_measure

  • 1NF: Табелата е во 1NF бидејќи секое поле содржи атомски вредности и нема дупликат вредности.
  • 2NF: Табелата е во 2NF бидејќи сите атрибути зависат целосно од примарниот клуч. Нема делумни релации.
  • BCNF: Табелата е во BCNF бидејќи нема транзитивни релации и сите атрибути зависат целосно од примарниот клуч.

Products

BATCHES(id, product_id* (PRODUCTS), batch_code, production_date, expiration_date, net_weight, gross_weight, units_per_batch)

id → product_id, batch_code, production_date, expiration_date, net_weight, gross_weight, units_per_batch

  • 1NF: Табелата е во 1NF бидејќи секое поле содржи атомски вредности и нема дупликат вредности.
  • 2NF: Табелата е во 2NF бидејќи сите атрибути зависат целосно од примарниот клуч. Странскиот клуч producer_id не создава делумни релации.
  • BCNF: Табелата е во BCNF бидејќи сите атрибути зависат целосно од примарниот клуч и нема транзитивни релации.

Batches

ORDERS(id, date, status, estimated_delivery_date, buyer_id* (CLIENTS), receiver_id* (CLIENTS), transport_id* (TRANSPORTS), payment_id* (PAYMENTS))

id → date, status, estimated_delivery_date, buyer_id, receiver_id, transport_id, payment_id

  • 1NF: Табелата BATCHES е во 1NF бидејќи секое поле содржи атомски вредности. Нема дупликат вредности или структурни комплификации. Секој ред претставува една серија и не постојат атрибути кои содржат повеќе од една вредност.
  • 2NF: Табелата BATCHES е во 2NF бидејќи сите атрибути зависат целосно од примарниот клуч id. Странскиот клуч product_id не создава делумни релации. Секој атрибут во табелата е директно поврзан со целокупниот идентитет на серијата, кој е идентификуван преку примарниот клуч.
  • BCNF: Табелата BATCHES е во BCNF затоа што нема транзитивни релации. Сите атрибути зависат целосно од примарниот клуч id и нема релации каде не-клучни атрибути зависат од други не-клучни атрибути.

Во новата база на податоци, табелата BATCHES е додадена како нова структура која ги претставува сериите. Оваа табела е важна за управување со производите во контекст на сериите, нивните рокови на траење и друга релевантна продукциска информација.

Orders

ORDER_BATCHES(id, order_id* (ORDERS), batch_id* (BATCHES), quantity, price_per_unit, total_price, created_at, updated_at)

id → order_id, batch_id, quantity, price_per_unit, total_price, created_at, updated_at

  • 1NF: Табелата е во 1NF бидејќи сите атрибути содржат атомски вредности и нема дупликат вредности.
  • 2NF: Табелата е во 2NF бидејќи сите атрибути зависат целосно од примарниот клуч. Foreign keys (buyer_id, receiver_id, transport_id, payment_id) не создаваат делумни релации.
  • BCNF: Табелата е во BCNF бидејќи секоја релација е целосно зависна од примарниот клуч и нема транзитивни релации.

Order Batches

INVOICES(id, invoice_date, status, total_amount, order_id* (ORDERS))

id → invoice_date, status, total_amount, order_id

  • 1NF: Табелата е во 1NF бидејќи сите атрибути содржат атомски вредности и нема дупликат вредности.
  • 2NF: Табелата е во 2NF бидејќи сите атрибути зависат целосно од примарниот клуч составен од order_id и batch_id.
  • BCNF: Табелата е во BCNF бидејќи нема транзитивни релации и сите релации се од примарните клучеви.

Табелата ORDER_BATCHES е нов додаток во базата кој овозможува детален и прецизен запис на сериите кои се дел од некоја нарачка. Ова ја заменува претходната едноставна табела ORDER_PRODUCT и го подобрува групирањето на производите.

Invoices

PACKING_LISTS(id, order_id* (ORDERS), packing_list_date, status)

id → order_id, packing_list_date, status

  • 1NF: Табелата е во 1NF бидејќи секое поле содржи атомски вредности и нема дупликат вредности.
  • 2NF: Табелата е во 2NF бидејќи сите атрибути зависат целосно од примарниот клуч. Странскиот клуч order_id не создава делумни релации.
  • BCNF: Табелата е во BCNF бидејќи сите атрибути зависат целосно од примарниот клуч и нема транзитивни релации.

Packing Lists

PAYMENTS(id, order_id* (ORDERS), amount, currency, due_date, exchange_rate, payment_date, payment_method, payment_status)

id → order_id, amount, currency, due_date, exchange_rate, payment_date, payment_method, payment_status

  • 1NF: Табелата е во 1NF бидејќи секое поле содржи атомски вредности и нема дупликат вредности.
  • 2NF: Табелата е во 2NF бидејќи сите атрибути зависат целосно од примарниот клуч. Странскиот клуч order_id не создава делумни релации.
  • BCNF: Табелата е во BCNF бидејќи нема транзитивни релации и сите атрибути зависат целосно од примарниот клуч.

Табелата PACKING_LISTS е нова структура во базата која има за цел да го подобри управувањето со логистиката на нарачките. Се користи за следење и управување со податоците кои се поврзани со пакувањето на производите во нарачките.

Payments

TRANSPORTS(id, name, departure_point, arrival_point, estimated_departure_date, estimated_arrival_date, incoterm, insurance_conditions)

id → name, departure_point, arrival_point, estimated_departure_date, estimated_arrival_date, incoterm, insurance_conditions

  • 1NF: Табелата е во 1NF бидејќи сите атрибути содржат атомски вредности и нема дупликат вредности.
  • 2NF: Табелата е во 2NF бидејќи сите атрибути зависат целосно од примарниот клуч. Странскиот клуч order_id не создава делумни релации.
  • BCNF: Табелата е во BCNF бидејќи сите атрибути зависат целосно од примарниот клуч и нема транзитивни релации.
Note: See TracWiki for help on using the wiki.