数据库管理(SQLite)和表生成

时间:2010-12-15 14:39:08

标签: database database-design sqlite

我正在构建一个RSS阅读器,它存储在数据库中提取的文章(特别是SQLite,但我认为这并不重要)。

无论如何,当我最初设计和编码它时,想法是为用户订阅的每个订阅源创建一个新表,并拥有一个大的元表。在阅读了更多关于数据库管理的内容后,我发现另一种处理方法是在rss feed中为每个项目提供两个表,元表和一个表,并在该表中有一个id为喂它来自。

那么,为什么我应该将我正在使用的模型切换为大型项目表,而不是为用户订阅的每个Feed添加一个模型,有什么主要原因吗?

3 个答案:

答案 0 :(得分:2)

根据你所写的内容:

  

为每个Feed创建一个新表   用户订阅了

在数据库世界中,至少对我来说,这是疯了。

试着想象一下用户想要订阅1.000 rss feed,你会创建1.000个表吗?没办法。

由于主键和外键,您可以将数据放在一起。为什么不使用此强项。

首先,您可以更轻松地编写查询。您不必担心表名。你将有一个表rssfeed和一个表格帖子然后一切都将链接到togheter。

花时间为数据库建模。在你的情况下,它不会那么难。

您可能需要3到4个表才能处理rssfeeds,post和metadatas。 在这里提出另一个问题:如何根据需要设计数据库?

人们会乐意帮助你。

提出你的问题,你将节省时间,金钱(即使不是关于它),以及最佳实践(避免丑陋的设计)。

答案 1 :(得分:1)

这是一个简单的编码问题,而不是每个RSS提要有一个表可能有轻微的性能优势。拥有一个表(而不是每个提要一个表)意味着您的代码不必执行任何DDL,您可以更轻松地进行跨RSS搜索;但查询和更新可能会慢一点。我可能会选择带有Feed列(索引)的单个表来简化搜索。

答案 2 :(得分:1)

存储此类数据的典型方法(假设所有Feed的数据结构相同)确实只有一个表用于所有Feed。

为什么呢?因为这将允许您以相同的方式访问所有Feed。例如,假设您要在单个视图中合并所有Feed,或者计算所有Feed的某种统计信息。通过将它们全部放在一个表中,这将非常简单;将它们全部放在不同的表中会使这更复杂,没有任何(据我所见)增加的价值。