ZADANIE 1 (80%)
Przedstawiona poniżej tabela zawiera listę transakcji, zawartych podczas sesji giełdowej:
Trans ID
Date And Time
Cust
ID
Cust Name
Trans
Typ
e
Ticker
Symbol
Stock Name
Num
Shares
Unit
Price
Categ
Code
Category
Descrip
567823
23-Aug-2006 9:37
789 MegaBrokers
Sell TMAX
TechMax
1000
$ 8.24 SMC
Small Cap
IT
Info Tech
567824
23-Aug-2006 9:38
989 Kirt Kerorian
Buy TMAX
TechMax
1000
$ 8.26 SMC
Small Cap
IT
Info Tech
567825
23-Aug-2006 9:41
789 MegaBrokers
Sell ALO
Alstom, SA
2500
$12.56 LGC
Large Cap
MAN
Manufacturing
EUR
Europe
567826
23-Aug-2006 9:41
320 TradePartners
Sell WFMI
Whole Foods 700
$20.41 MDC
Mid Cap
RET
Retail
567827
23-Aug-2006 9:42
789 MegaBrokers
Buy WFMI
Whole Foods 500
$20.43 MDC
Mid Cap
RET
Retail
567828
23-Aug-2006 9:42
989 Kirt Kerorian
Buy WFMI
Whole Foods 200
$20.43 MDC
Mid Cap
RET
Retail
567829
23-Aug-2006 9:42
210 ElecTrade
Buy ALO
Alstom, SA
2500
$12.58 LGC
Large Cap
MAN
Manufacturing
EUR
Europe
567830
23-Aug-2006 9:44
320 TradePartners
Sell MSFT
Microsoft
4000
$43.82 LGC
Large Cap
IT
Info Tech
567831
23-Aug-2006 9:44
776 Max Selmer
Sell MSFT
Microsoft
1000
$43.82 LGC
Large Cap
IT
Info Tech
567832
23-Aug-2006 9:45
789 MegaBrokers
Buy MSFT
Microsoft
5000
$43.84 LGC
Large Cap
IT
Info Tech
567833
23-Aug-2006 9:45
989 Kirt Kerorian
Sell TM
Toyota
800
$51.00 LGC
Large Cap
MAN
Manufacturing
AS
Asia
567834
23-Aug-2006 9:46
776 Max Selmer
Buy TM
Toyota
800
$51.02 LGC
Large Cap
MAN
Manufacturing
AS
Asia
Trans ID
-unikalny identyfikator transakcji giełdowej
Date And Time
data I godzina zawarcia transakcji
CustID
unikalny identyfikator klienta giełdy
Cust Name
nazwa klienta giełdy
Trans Type
typ transakcji
Ticker Symbol
unikalny symbol akcji
Stock Name
nazwa emitenta akcji
Num Shares
liczba udziałów
Unit Price
cena jednostkowa
Categ Code
symbol kategorii nazwa emitenta akcji (lista symboli jest stała dla
emitenta)
Category Descrip opis kategorii (powyżej)
Zadanie 2 (20%):
Załóżmy, że istnieje relacja R(A,B,C,D,E, F,G), w której zachodzą następujące zależności
funkcjonalne:
A
→
B
C
→
AD
CE → B
EF
→
C
Dokonaj dekompozycji relacji do prawidłowej postaci: 1NF, 2NF, 3NF I BCNF (Boyce-Codd
Normal Form)
Opisz zastosowane metody dekompozycji i nominowania kluczy głównych.
ROZWIĄZANIE:
1.
OFN: TRANSAKCJA = TransID + DateAndTime + CustID + CustName +
TransType + TickerSymbol + StockName + NumShares + UnitPrice
+{CategCode+ CategoryDescription}
2.
Lista FD:
FD1: = {CategCode → CategoryDescription}
FD2: = {TickerSymbol → StockName}
FD3: = {CustID → CustName}
FD4: = {TransID → DateAndTime, CustID, CustName, TransType,
TickerSymbol, StockName, NumShares, UnitPrice }
3.
1NF:
Trans ID
Date And Time
Cust
ID
Cust Name
Trans
Typ
e
Ticker
Symbol
Stock Name
Num
Shares
Unit
Price
Categ
Code
Category
Descrip
567825
23-Aug-2006 9:41
789 MegaBrokers
Sell ALO
Alstom, SA
2500
$12.56 LGC
Large Cap
567825
23-Aug-2006 9:41
789 MegaBrokers
Sell ALO
Alstom, SA
2500
$12.56 MAN
Manufacturing
567825
23-Aug-2006 9:41
789 MegaBrokers
Sell ALO
Alstom, SA
2500
$12.56 EUR
Europe
R
TRANSAKCJA
={
TransID, CategCode → DateAndTime, CustID, CustName,
TransType, TickerSymbol, StockName, NumShares, UnitPrice,
CategoryDescription
}
4.
NORMALIZACJA:
A.
FD1 łamie 2NF w relacji
R
TRANSAKCJA
– dokonuję dekompozycji:
R
TRANSAKCJA
=
{
TransID, CategCode → DateAndTime, CustID,
CustName, TransType, TickerSymbol, StockName,
NumShares, UnitPrice
}.
R
KATEGORYZACJA
= {
CategCode → CategoryDescription
}.
B.
FD4 łamie 2NF w relacji
R
TRANSAKCJA
– dokonuję dekompozycji:
R
KATEGORIETRANSAKCJI
=
{
TransID, CategCode
}.
R
TRANSAKCJA
=
{
TransID → DateAndTime, CustID, CustName,
TransType, TickerSymbol, StockName, NumShares,
UnitPrice
}.
R
KATEGORYZACJA
= {
CategCode → CategoryDescription
}.
C.
FD2 łamie 3NF w relacji
R
TRANSAKCJA
– dokonuję dekompozycji:
R
KATEGORIETRANSAKCJI
=
{
TransID, CategCode
}.
R
TRANSAKCJA
=
{
TransID → DateAndTime, CustID, CustName,
TransType, TickerSymbol, NumShares, UnitPrice
}.
R
KATEGORYZACJA
= {
CategCode → CategoryDescription
}.
R
AKCJE
=
{
TickerSymbol → StockName
}.
D.
FD3 łamie 3NF w relacji
R
TRANSAKCJA
– dokonuję dekompozycji:
R
KATEGORIETRANSAKCJI
=
{
TransID, CategCode
}.
R
TRANSAKCJA
=
{
TransID → DateAndTime, CustID, TransType,
TickerSymbol, NumShares, UnitPrice
}.
R
KATEGORYZACJA
= {
CategCode → CategoryDescription
}.
R
AKCJE
=
{
TickerSymbol → StockName
}.
R
KLIENCI
=
{
CustID → CustName
}.
StockExchange
TRANSAKCJA
TransID:INTEGER
DateAndTime:DATE
TransType:VARCHAR
NumShares:INTEGER
UnitPrice:INTEGER
KATEGORIETRANSAKCJI
KATEGORYZACJA
CategCode:INTEGER
CategoryDescripti on:VARCHAR
AKCJE
Ti ckerSymbol:INTEGER
StockName:VARCHAR
KLIENCI
CustID:INTEGER
CustName:VARCHAR