私は、データが日常的に挿入される株式市場の価格データを格納し、取得するアプリケーションを書いています。私は各資産(株式)と世界の市場のほとんどのデータを保管しています。これは、テーブル大規模な株価データのデータのためのSQL Serverデータベース設計
国テーブルの私の現在の設計である:
CREATE TABLE [dbo].[List_Country]
(
[CountryId] [char](2) NOT NULL,
[Name] [nvarchar](100) NOT NULL,
[CurrenyCode] [nvarchar](5) NULL,
[CurrencyName] [nvarchar](50) NULL
CONSTRAINT [PK_dbo.List_Country]
PRIMARY KEY CLUSTERED ([CountryId] ASC)
)
資産テーブル:国上
CREATE TABLE [dbo].[List_Asset]
(
[AssetId] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](max) NOT NULL,
[CountryId] [char](2) NOT NULL,
CONSTRAINT [PK_dbo.List_Asset]
PRIMARY KEY CLUSTERED ([AssetId] ASC)
)
外部キー制約:
ALTER TABLE [dbo].[List_Asset] WITH CHECK
ADD CONSTRAINT [FK_dbo.List_Asset_dbo.List_Country_CountryId]
FOREIGN KEY([CountryId])
REFERENCES [dbo].[List_Country] ([CountryId])
ON DELETE CASCADE
GO
STOCK_PRICEテーブル:資産上
CREATE TABLE [dbo].[Stock_Price_Data]
(
[StockPriceDataId] [int] IDENTITY(1,1) NOT NULL,
[AssetId] [int] NOT NULL,
[PriceDate] [datetime] NOT NULL,
[Open] [int] NOT NULL,
[High] [int] NOT NULL,
[Low] [int] NOT NULL,
[Close] [int] NOT NULL,
[Volume] [int] NOT NULL,
CONSTRAINT [PK_dbo.Stock_Price_Data]
PRIMARY KEY CLUSTERED ([StockPriceDataId] ASC)
)
外部キー制約:
ALTER TABLE [dbo].[Stock_Price_Data] WITH CHECK
ADD CONSTRAINT [FK_dbo.Stock_Price_Data_dbo.List_Asset_AssetId]
FOREIGN KEY([AssetId])
REFERENCES [dbo].[List_Asset] ([AssetId])
ON DELETE CASCADE
版IE、大量の行で満たされるでしょう、私は現時点で持っている懸念がStock_Price_Dataテーブルです国の特定の市場では、容易に2万の資産が存在する可能性があります。したがって、1年間(260日の取引)に、私は潜在的に各国に520万行を持つことができます。
アプリケーションは、ユーザーがデフォルトの国以外のデータにアクセスすることを制限しません(ログイン時に設定されます)。
各国ごとに別々のテーブル(Stock_Price_Data_AU)を設定することをおすすめしますか?または、上記のシナリオでデータベースを設計するより良い方法はありますか?すべての
-Alan-
これは膨大な量のデータではありません。問題がある場合は、デザインを見直してください。 – DB101
毎日挿入すると、Stock_Priceに[AssetId]、[PriceDate]のPKだけがあると考えられます。 [StockPriceDataId]の実際の目的はありますか? – Paparazzi
単一のテーブルにデータを保持すると、メンテナンスが向上します。テーブルのインデックスのみを作成すると、データの取得が高速になります。 –