2015-09-22 112 views
0

我使用了很多stackoverflow,但這是我的第一個問題,所以如果我做錯了任何事情,請讓我知道。我不是程序員(我只是爲自己的需要編程),所以我願意接受教程建議等。如果你只是給我一些東西來閱讀並自己找到答案,我不會感到生氣。SQLite數據庫問題,設計問題(索引/多個字段)

好的,到了這一點 - 我試圖編寫簡單的應用程序來跟蹤我的個人開銷,並且我遇到了數據庫設計問題。我正在使用VStudio創建數據庫(SQLite)。我附上了我的設計圖,我有一些問題。

My SQLite diagram

我不知道到底如何設計「交易」表。像日期,付款類型等字段似乎很容易,但想法是在此表中存儲有關交易的信息,所以我需要在那裏存儲多個產品。我讀過它並創建了「Transactions_Products」表,這將有助於此。我的問題是:我在哪裏把交易中的產品數量?我想不出一個地方來說。我試圖找到類似的數據庫,但找不到任何東西。

第二件事。我已經閱讀了很多索引,但我仍然無法理解這個想法。我不知道何時使用它。我是否應該只在域名上使用它,以便「查詢」很多內容?

最後一個 - 這樣一個小應用程序更適合自己將帳戶餘額存儲在單獨的表中,還是每次都應該計算一次?

正如我所說的,我不需要這樣的答案:「做到這一點,做到這一點」。如果你給我一些很好的教程/文章,我想我可以自己找到答案,但我找不到它。也許我在錯誤地尋找它。

非常感謝您提供任何信息。

+0

是否可以將圖形內嵌顯示? –

+0

閱讀[查詢計劃](http://www.sqlite.org/queryplanner.html)。 –

+0

@CL。謝謝,先生,我肯定會閱讀! – Monastario

回答

1

我在哪裏把交易產品的數量?

交易是一個不好的表名,因爲它是模糊的,有多種含義。考慮「支付」,「購買發票」等。對於一些現有模式,請參閱https://dba.stackexchange.com/questions/12991/ready-to-use-database-models-example/23831#23831

我應該只在字段上使用[索引],我會「查詢」很多嗎?

沒有免費的午餐。索引佔用空間,並可能減慢插入。從主鍵上的索引(這是SQLite的默認值)開始,測量什麼是慢的(查看查詢計劃),並添加索引(如果有幫助並且有空間)。

對於這樣一個小型的應用程序來說,更適合將自己的帳戶餘額存儲在單獨的表中,還是應該每次計算一次呢?

對於像您所描述的操作/事務數據庫,請避免存儲計算值。 SQLite可以快速計算數字:)

不成熟的優化是不成熟的。首先使其完全正常化。如果您遇到性能問題,請分析真正導致速度下降的原因並從那裏開始。

+0

非常感謝,我會檢查它,看看我能否解決我的問題:)我還會讀一些關於規範化的內容。 – Monastario