1

我是一名初级程序员,尤其是数据库设计的新手。

不久前,我在业余时间创建了一个程序来跟踪和绘制 java 中的股价变化。当时我懒得为它安装一个数据库,所以它只是使用一堆 CSV 文件来存储数据,每个股票都被跟踪(例如 GOOG.csv、BHP.csv)。

我决定更新它以使用数据库作为学习活动,但在我的设计中我遇到了障碍。我应该继续我之前为每只股票设计的单独数据堆还是整合它们。也就是说,我应该为每个跟踪的股票创建一个表格,并为每天的数据创建一条新记录,还是应该有一个带有股票标识符的通用“股票数据”表。

第一个似乎更直接,获取所有记录就像

SELECT * 
FROM GOOG

第二个在哪里

SELECT *
FROM stock_data
WHERE stock_name="GOOG"

就像我说的,我是一个完全的数据库新手。对我来说,第一个似乎会更快,但总体而言是一个糟糕且难以管理的设计,无法很好地扩展。如果第一个很好,第二个似乎可能会不必要地慢。

我意识到,由于我的项目规模,任何一个都可能工作得很好,但作为这类问题的规则,哪一个是正确的设计选择?

欢迎任何 sage DB 设计建议。:)

4

1 回答 1

1

一次偶然的机会,我也写了一个类似的程序来跟踪我自己的投资。一个合适的模式是

STOCKS
id or stock tracker or something unique
name

PRICES
stock (foreign key to stocks)
curdate
price

价格表的主键是 stock + curdate。

如果您想跟踪采购、销售、股息和成本,那么您至少需要一张桌子(如果不是两张)。我的大部分投资都是在具有复杂赎回计划的债券上,所以我也为它们准备了一些特殊的表格。

于 2012-10-22T08:18:18.780 回答