Django orm. Помогите разобраться с дизайном базы данных
Помогите понять, как работает бд на примере коинмаркеткэпа. Есть, например, 3000 монет, их цена обновляется каждые 5 минут. Куда накапливать историю цен каждой монеты? Для каждой монеты сделать отдельную таблицу, связать со списком всех монет (fk)? Если так, то как тогда создать 3000 таблиц?
Ответы (1 шт):
Автор решения: philip_philipch
→ Ссылка
Создаете две таблицы.
1. Таблица монет "Coins":
id - уникальный номер монеты
name - наименование
2. Таблица истории цен на монеты "CoinsPrice":
id - уникальный номер записи
id_coin - уникальный номер монеты
price - цена на монету
dt_price - дата цены
CREATE TABLE Coins
(
id INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(20) NOT NULL,
);
CREATE TABLE CoinsPrice
(
id INT PRIMARY KEY AUTO_INCREMENT,
id_coin INT,
dt_price Date,
FOREIGN KEY (id_coin) REFERENCES Coins (id)
);
"Coins" - справочник монет, "CoinsPrice" - пишите все изменения.
Посмотреть историю изменения цены на монету по типу такого:
SELECT c.name as [Монета], p.price as [Цена], p.dt_price as [Дата]
FROM Coins c LEFT JOIN CoinsPrice p ON c.id = p.id_coin
WHERE c.id = %id_монеты%