gpt4 book ai didi

mysql - 保持盈利记录的最佳方式,确保性能和可维护性

转载 作者:行者123 更新时间:2023-11-29 11:02:51 25 4
gpt4 key购买 nike

我试图记录我网站用户的收入,但我一直困惑于以下哪种设计在性能和整体可用性方面最好:

• 第一种方式:

通过这种方式,将创建一个包含每年一个表的数据库。每个表有 13 列,即用户 ID 和 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 列,即用户 ID 和 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 年,就整体性能和长期可维护性而言,哪种设计方式是最佳方式?

(需要记住的一件事是,对于活跃用户,每个用户的收入每天都会更新多次)

最佳答案

第三种方式:

创建单个数据库。为每个实体创建一个表:

CREATE DATABASE IF NOT EXISTS Earnings_Record;

CREATE TABLE IF NOT EXISTS Earnings_Record.Users (
UsersId INT AUTO_INCREMENT PRIMARY KEY,
. . .
);

CREATE TABLE IF NOT EXISTS Earnings_Record.Earnings (
EarningsID INT AUTO_INCREMENT PRIMARY KEY,
UserId INT NOT NULL,
EarningsDate DATE,
Amount DECIMAL(10, 2) -- or whatever
CONSTRAINT fk_Earnings_UserId FOREIGN KEY (UserId) REFERENCES Users(UserId)
) ;

简单。查询方便。正是您所需要的。这是表示数据的 SQL 方式。

关于mysql - 保持盈利记录的最佳方式,确保性能和可维护性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41923955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com