【问题标题】:SQLite database questions, problems with design (indexing/multiple fields)SQLite 数据库问题,设计问题(索引/多字段)
【发布时间】:2015-12-19 16:57:37
【问题描述】:

我经常使用 stackoverflow,但这是我在这里的第一个问题,所以如果我做错了什么,请告诉我。我不是程序员(我只是根据自己的需要进行编程),所以我愿意接受教程建议等。如果您只是给我一些阅读内容并自己找到答案,我不会生气。

好的,直截了当 - 我正在尝试编写简单的应用程序来跟踪我的个人开支,但我在数据库设计方面遇到了问题。我正在使用 VStudio 创建数据库(SQLite)。我在我的设计中附上了一张图表,我有一些问题。

My SQLite diagram

我不知道如何设计“交易”表。日期、付款类型等字段似乎很简单,但我的想法是在此表中存储有关交易的信息,因此我需要在那里存储多个产品。我已经阅读了它并创建了表“Transactions_Products”来帮助解决这个问题。我的问题是:我在哪里将产品数量放在交易中?我想不出可以放它的地方。我试图找到类似的数据库,但找不到任何东西。

第二件事。我读过很多关于索引的文章,但我仍然无法理解这个想法。我不知道什么时候使用它。我应该只在我会经常“查询”的字段上使用它吗?

最后一个 - 对于这样一个小应用程序来说,将我的帐户余额存储在单独的表中更好还是我应该每次都计算它?

正如我所说,我不需要诸如“做这个,做那个”之类的答案。如果你只是给我一些好的教程/文章,我想我可以自己找到答案,但我找不到。可能我找错了。

提前感谢您提供任何信息。

【问题讨论】:

  • 是否可以内联显示图表?
  • 阅读Query Planning
  • @CL。谢谢你,先生,我一定会读的!
  • @CoryRoy 对不起,先生,但我不明白“内联”是什么意思。您是指表的 SQL 预览吗?还是直接在这里发图?
  • @CoryRoy 所以是的,直接发图片,我当然会这样发,但不幸的是我还不能这样做(我认为是 10 个帖子)

标签: database sqlite database-design database-normalization


【解决方案1】:

我在交易中将产品数量放在哪里?

Transactions 是一个糟糕的表名,因为它含糊不清且具有多种含义。考虑“付款”、“购买发票”等。有关一些现有模式,请参阅https://dba.stackexchange.com/questions/12991/ready-to-use-database-models-example/23831#23831

我应该只在我将“查询”很多的字段上使用 [indexes] 吗?

没有免费的午餐。索引占用空间,并且会减慢插入速度。从主键上的索引开始(这是 SQLite 的默认设置),衡量什么是慢的(查看查询计划),如果它们有帮助并且有空间,则添加索引。

这么小的应用程序只为我自己将我的帐户余额存储在一个单独的表中更好还是我应该每次都计算它?

对于您描述的操作/事务性数据库,请避免存储计算值。 SQLite 可以快速数数:)

过早的优化是不成熟的。首先通过完全标准化使其工作。如果您遇到性能问题,请分析真正导致减速的原因并从那里着手。

【讨论】:

  • 非常感谢,我会检查一下,看看能否解决我的问题 :) 我还会阅读更多关于规范化的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
相关资源
最近更新 更多