| Version 9 (modified by , 4 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
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 бидејќи сите атрибути зависат целосно од примарниот клуч. Нема делумни релации.
- BCNF: Табелата е во BCNF бидејќи секоја релација е целосно зависна од примарниот клуч и нема транзитивни релации.
Producers
PRODUCERS(id, name, address, country, phone_number, email)
id → name, address, country, phone_number, email
- 1NF: Табелата е во 1NF бидејќи секое поле содржи атомски вредности и нема дупликат вредности.
- 2NF: Табелата е во 2NF бидејќи сите атрибути зависат целосно од примарниот клуч. Нема делумни релации.
- BCNF: Табелата е во BCNF бидејќи нема транзитивни релации и сите атрибути зависат целосно од примарниот клуч.
Products
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 бидејќи сите атрибути зависат целосно од примарниот клуч. Надворешниот клуч
producer_idне создава делумни релации. - BCNF: Табелата е во BCNF бидејќи сите атрибути зависат целосно од примарниот клуч и нема транзитивни релации.
Batches
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: Табелата
BATCHESе во 1NF бидејќи секое поле содржи атомски вредности. Нема дупликат вредности или структурни комплификации. Секој ред претставува една серија и не постојат атрибути кои содржат повеќе од една вредност. - 2NF: Табелата
BATCHESе во 2NF бидејќи сите атрибути зависат целосно од примарниот клучid. Надворешниот клучproduct_idне создава делумни релации. Секој атрибут во табелата е директно поврзан со целокупниот идентитет на серијата, кој е идентификуван преку примарниот клуч. - BCNF: Табелата
BATCHESе во BCNF затоа што нема транзитивни релации. Сите атрибути зависат целосно од примарниот клучidи нема релации каде не-клучни атрибути зависат од други не-клучни атрибути.
Во новата база на податоци, табелата BATCHES е додадена како нова структура која ги претставува сериите. Оваа табела е важна за управување со производите во контекст на сериите, нивните рокови на траење и друга релевантна продукциска информација.
Orders
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: Табелата е во 1NF бидејќи сите атрибути содржат атомски вредности и нема дупликат вредности.
- 2NF: Табелата е во 2NF бидејќи сите атрибути зависат целосно од примарниот клуч. Foreign keys (
buyer_id,receiver_id,transport_id,payment_id) не создаваат делумни релации. - BCNF: Табелата е во BCNF бидејќи секоја релација е целосно зависна од примарниот клуч и нема транзитивни релации.
Order Batches
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 бидејќи сите атрибути зависат целосно од примарниот клуч составен од
order_idиbatch_id. - BCNF: Табелата е во BCNF бидејќи нема транзитивни релации и сите релации се од примарните клучеви.
Табелата ORDER_BATCHES е нов додаток во базата кој овозможува детален и прецизен запис на сериите кои се дел од некоја нарачка. Ова ја заменува претходната едноставна табела ORDER_PRODUCT и го подобрува групирањето на производите.
Invoices
Оваа табела е отстранета, бидејќи е редундантна. Содржи информации кои се повторуваат. Иницијално, целта на {{INVOICES}} табелата беше да се креира ставка за фактура во базата, но по многу размислување, одлучено беше тотално да се отстрани оваа табела, заедно со PACKING_LISTS табелата, бидејќи фактура може динамички да се генерира од ORDERS табелата.
Packing Lists
Причината е иста како за INVOICES табелата.
Payments
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 бидејќи сите атрибути зависат целосно од примарниот клуч и нема транзитивни релации.
