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_монеты%
→ Ссылка