我正在研究一个项目但是设计数据库时遇到了问题.我需要存储一年中每天的价格,但我需要能够更改特定日期的价格.
我是否需要每天创建一个列,在这种方法中我必须在表中创建365列.
你对这个问题有什么更好的解决方案,任何帮助将不胜感激,谢谢.
您应该创建一个包含6列的表.
CREATE TABLE IF NOT EXISTS priceHistory (
`price` decimal(8,2) NOT NULL,
`date` datetime,
`productId` VARCHAR(50),
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
`createdAt` TIMESTAMP DEFAULT NOW(),
`updatedAt` TIMESTAMP
) ENGINE = INNODB;
Run Code Online (Sandbox Code Playgroud)
现在您可以插入每天的日期和价格,列created_at,updatedAt并id自动插入(并updatedAt自动更新),因此您不再需要为此烦恼.
如果您要在每日基础上保存这些价格并稍后访问数据,您甚至不需要该date列,只需createdAt再次使用该列即可自动创建INSERT.
拥有数据后,您可以查询它
SELECT * FROM priceHistory WHERE DATE(`date`) = '2015-02-29';
Run Code Online (Sandbox Code Playgroud)
您可能还会发现有关DATE函数的mysql文档很有用.
编辑
正如@murenik在他的回答中提到的那样,推荐的方式是建立一个与表格的关系,保存您可能拥有的产品详细信息.为此,请将productId语句更改为
productId INT PRIMARY KEY REFERENCES products(id),
Run Code Online (Sandbox Code Playgroud)
这将链接这些表,使未来的查询更容易,更有效.
SELECT ph.*, p.*
FROM products p
INNER JOIN priceHistory ph on p.id = ph.productId
Run Code Online (Sandbox Code Playgroud)
请参阅mysql JOIN.
| 归档时间: |
|
| 查看次数: |
1734 次 |
| 最近记录: |