Database design 用于跟踪库存数据的相互依赖或集成表

Database design 用于跟踪库存数据的相互依赖或集成表,database-design,data-structures,Database Design,Data Structures,我是一名初级程序员,尤其是数据库设计方面的新手 不久前,在我的业余时间,我创建了一个用java跟踪和绘制股价变化的程序。当时我不想为它安装数据库,所以它只是用一堆CSV文件来存储数据,每个股票都有一个被跟踪的数据(例如GOOG.CSV、BHP.CSV) Iv'e决定将其更新为使用数据库作为学习活动,但在我的设计中遇到了障碍。 我应该继续我以前为每只股票设计的单独数据堆,还是将它们集成在一起。也就是说,我应该为每个跟踪股票创建一个表,为每个日数据创建一个新记录,还是应该为股票创建一个带有标识符的通

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

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

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

第一种方法似乎更直接,获取所有记录将非常简单

SELECT * 
FROM GOOG
第二个在哪里

SELECT *
FROM stock_data
WHERE stock_name="GOOG"
就像我说的,我完全是个数据库新手。对我来说,第一个看起来会更快,但总体来说,这是一个糟糕且难以管理的设计,不能很好地扩展。 第二个似乎是不必要的缓慢,如果第一个是好的

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


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

碰巧,我也写了一个类似的程序来跟踪我自己的投资。一个合适的模式是

STOCKS
id or stock tracker or something unique
name

PRICES
stock (foreign key to stocks)
curdate
price
prices表的主键是stock+curdate


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

碰巧,我也写了一个类似的程序来跟踪我自己的投资。一个合适的模式是

STOCKS
id or stock tracker or something unique
name

PRICES
stock (foreign key to stocks)
curdate
price
prices表的主键是stock+curdate


如果您想跟踪购买、销售、股息和成本,那么您将至少需要一个表(如果不是两个的话)。我的大部分投资都是在有复杂赎回计划的债券上,所以我也有一些专门的表格供他们参考。

IMHO你对形势做了很好的分析。我会选择第二个。如果您在股票名称上为数据库编制索引,以帮助SQL按名称查找记录,那么速度不一定会慢很多。也许您应该查看时间序列数据库?谢谢@lazin,我会查看的。您对情况做了很好的分析。我会选择第二个。如果您在股票名称上为数据库编制索引,以帮助SQL按名称查找记录,速度不一定会慢得多。也许您应该查看时间序列数据库?谢谢@lazin,我会查看的。