-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathcreateTables.sql
74 lines (60 loc) · 1.89 KB
/
createTables.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
CREATE TABLE exchanges (
name VARCHAR(10) NOT NULL,
region VARCHAR(10) NOT NULL,
exchange_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);
CREATE TABLE coins (
symbol VARCHAR(5) NOT NULL,
name VARCHAR(30) NOT NULL,
coin_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);
CREATE TABLE price_feed (
coin INT,
price FLOAT NOT NULL,
date DATETIME NOT NULL default CURRENT_TIMESTAMP(),
exchange INT,
priceFeed_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
FOREIGN KEY (coin) REFERENCES coins(coin_id),
FOREIGN KEY (exchange) REFERENCES exchanges(exchange_id)
);
CREATE TABLE wallets (
exchange INT,
coin INT,
price FLOAT NOT NULL DEFAULT 0 ,
amount FLOAT NOT NULL DEFAULT 0,
fiat_now FLOAT NOT NULL DEFAULT 0,
fiat_start FLOAT NOT NULL DEFAULT 0,
wallet_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
FOREIGN KEY (exchange) REFERENCES exchanges(exchange_id),
FOREIGN KEY (coin) REFERENCES coins(coin_id)
);
CREATE TABLE transactions (
transaction_id int AUTO_INCREMENT PRIMARY KEY,
type ENUM('Buy', 'Sell') NOT NULL,
transactionPrice FLOAT NOT NULL,
transactionQty INT NOT NULL,
transactionTotal INT NOT NULL,
priceFeed_id INT,
originWallet INT,
destinationWallet INT,
FOREIGN KEY (priceFeed_id) REFERENCES price_feed(priceFeed_id),
FOREIGN KEY (originWallet) REFERENCES wallets(wallet_id),
FOREIGN KEY (destinationWallet) REFERENCES wallets(wallet_id)
);
CREATE TABLE coinexchanges (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
coin_id INT,
exchange_id INT,
FOREIGN KEY (coin_id) REFERENCES coins(coin_id),
FOREIGN KEY (exchange_id) REFERENCES exchanges(exchange_id)
);
create view V_coinexchanges
as select ce.id
as 'Coin Exchange id', c.name
as 'Coin Name', c.symbol
as 'symbol', e.name
as 'Exchange Name',
c.coin_id as 'coin_id',
e.exchange_id as 'exchange_id' from coins c
inner join coinexchanges ce on ce.coin_id = c.coin_id
inner join exchanges e on e.exchange_id = ce.exchange_id;