Я стараюсь вести учет доходов пользователей моего веб-сайта, и я застрял в том, какой из следующих конструкций лучше всего подходит для производительности и общего удобства:Лучший способ сохранить рекорд заработка, обеспечивающий производительность и ремонтопригодность
• Первый способ:
Таким образом, единая база данных будет создана содержащий таблицу для каждого года. Каждая таблица будет иметь 13 столбцов, идентификатор пользователя и 12 месяцев. Значение для каждого поля будет строковым массивом со значениями всех дней месяца, например: [12.5, 28.3, 9.75, ...]
.
Код:
-- Create a database to keep record of the earnings of all users.
CREATE DATABASE IF NOT EXISTS `Earnings_Record`;
-- Create a table for each year containing 13 columns, the user ID and the 12 months.
CREATE TABLE IF NOT EXISTS `Earnings_Record`.`Earnings_2017` (
`ID` INT(11) NOT NULL,
`January` VARCHAR(250) NOT NULL,
`February` VARCHAR(250) NOT NULL,
...
`December` VARCHAR(250) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
• Второй способ:
Таким образом, будут созданы несколько баз данных, один на каждый год, содержащий таблицу для каждого месяца. Каждая таблица будет содержать 28-31 + 1 столбцы, идентификатор пользователя и 28-31 дней. Значение для каждого поля будет десятичным, например: 12.5
.
Код:
-- Create a database to keep record of the earnings of all users for 2017.
CREATE DATABASE IF NOT EXISTS `Earnings_2017`;
-- Create a table for each month with 28-31 + 1 columns, the user ID and the 28-31 days.
CREATE TABLE IF NOT EXISTS `Earnings_2017`.`January` (
`ID` INT(11) NOT NULL,
`Day 1` DECIMAL(10, 2) NOT NULL,
`Day 2` DECIMAL(10, 2) NOT NULL,
...
`Day 31` DECIMAL(10, 2) NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_general_ci;
Поскольку сайт, мы надеемся, будет работать в течение 5-10 лет, что это лучший способ создать устройство, когда дело доходит до общей производительности и долгосрочной ремонтопригодности ?
(Одна вещь, чтобы иметь в виду, что доходы каждого пользователя будет обновляться несколько раз в день для активных пользователей)
Даты не важны. Я хочу сохранить их, чтобы я мог рассчитывать статистику, такую как прогнозируемые доходы за месяц/срок/год, рост за последний период и т. Д. Пользователи уже сохранены в другой базе данных, и я буду сопоставлять данные с ними с помощью идентификатора. –