我是初级程序员,特别是数据库设计新手。
前一段时间,我在业余时间创建了一个程序来跟踪和绘制java中的股价变化。当时我无法为它安装数据库,因此它只使用了一堆CSV文件来存储数据,每个库存中都有一个被跟踪(例如GOOG.csv,BHP.csv)。
我决定更新它以使用数据库作为学习活动,但在我的设计中我遇到了障碍。 我应该继续以前为每个库存设计单独的数据堆还是将它们集成在一起。也就是说,我应该有每个跟踪库存的表格,每天数据的新记录,还是我应该有一个通用的“库存数据”表,其中包含该库存的标识符。
第一个似乎更直接,获得所有记录就像
一样简单SELECT *
FROM GOOG
第二名将在哪里
SELECT *
FROM stock_data
WHERE stock_name="GOOG"
像我说的那样,我是一个总数据库新手。对我来说,第一个看起来会更快,但整体上是一个糟糕且难以管理的设计,但不能很好地扩展。
如果第一个没问题的话,第二个看起来可能会不必要地慢。
我意识到由于我的项目规模,要么可能正常工作,但作为这类问题的规则,这将是正确的设计选择?
任何sage DB设计建议欢迎。 :)
答案 0 :(得分:1)
偶然的机会,我也写了一个类似的程序来跟踪我自己的投资。合适的架构将是
STOCKS
id or stock tracker or something unique
name
PRICES
stock (foreign key to stocks)
curdate
price
价格表的主键是stock + curdate。
如果您想跟踪购买,销售,股息和成本,那么您至少需要再增加一个表(如果不是两个)。我的大部分投资都是复杂的赎回计划,所以我也有一些特殊的表格。