SQLite3 简单数据库设计题

atm*_*osx 5 schema sqlite database-design

我是一个 ruby​​ 爱好者,完全没有与数据库相关的经验。我正在编写一个应用程序,该应用程序将在 SQLite3 数据库中收集和备份推文和博客文章(通过 rss 提要)。

第一个版本只支持备份特定用户的推文,因为我想为我的 twitter 帐户创建备份。所以 SQLite3 模式很简单:1 个数据库,每个用户 1 个表。

现在我想为以下内容添加备份支持:基于位置的推文(即来自德国的推文)、基于用户名的推文和基于主题标签的推文以及支持 RSS 提要。

由于 SQLite3 不支持任何类型的子表,并且我想创建一个在我开始测试时不需要更改的模式,我想就如何处理这个问题发表意见。

我在网上阅读了很多关于 SQL 数据库设计的文章或文章,还找到了几本书。还没有购买任何东西,我只是在考虑阅读有关 db 设计的一些基础知识,因为我不需要一本广泛的书,只是我正在评估的介绍。我不确定这些文章是否让我更加困惑。

我想出的 db 模式是一个 INDEX 表,其中将保存用户的信息,然后每个用户的每个选项都有一个表,例如:

?  lib git:(dev) ? cat sqlite_scheme.txt 
SQLite3 Table Scheme

MRParent
--------
db_key
table_id
twitter_id
twitter_option {what and how}
feed_url
short_description

MRChild-id-tweet-usr
---------
db_key
tweet_id {from MRParent}
table_id
tweet_date
tweet_location
tweet_text

MRChild-id-tweet-location
-------------------------
db_key
table_id {from MRParent}
tweet_id
tweet_date
tweet_location
tweet_text

MRChild-id-tweet-hashtag
------------------------
db_key
table_id {from MRParent}
tweet_hashtag
tweet_id
tweet_date
tweet_location
tweet_text

MRChild-id-rss
--------------
db_key
table_id {from MRParent}
post_author
post_date
post_title
post_text
Run Code Online (Sandbox Code Playgroud)

因此,所有表都将通过 table_id 链接到 INDEX 表(如果它是一种散列或用户数据的组合,我还没有决定,这里也欢迎想法)。

这个模式对于 SQLite3 db 是否看起来“合理”?欢迎提出任何意见和/或问题。

谢谢你的时间!

公共广播

atm*_*osx 1

在阅读了大量内容并收到有关SQL 数据规范化的提示后,我想到了这个模式。其余的将通过简单的请求处理:

  1. 表 MRindex - 有关条目的所有详细信息将在此处列出:key db | user_made_id | description | date | blob_picture | rss_feed | twitter_alias/keyword/hashtag |
  2. 表 MRtwitter - 所有 twitter 相关数据都将存储在这里:key db| index-at-table1| tw_option|tw_user | tw_date | tw_location | tw_name |tw_text
  3. 表 MRrss - 所有 rss 数据将存储在这里:key db | index-at-table1| rss_post_author | rss_post_date | rss_post_title | rss_post_text

任何评论和提示都将受到欢迎:-)

编辑:澄清一下......

MRIndex(也称为 table1)保存由用户填充的基本数据:可能是用户推文、主题标签或基于位置的推文。一旦此条目填满

MRtwitter 将保存推文和相关信息。字段index-at-table1是表MRindex的“链接”。

MRrss 博客文章也是如此。同样的情况也适用于“index-at-table1”。

对于 MR 指数:

描述:简短的用户描述 日期:创建日期 blob_picture:图片(如果有)(jpg、png 等) rss_feed:属于该用户的 RSS_feed URL twitter_alias/keyword/hashtag:@user、Greece(用于位置)或 #hashtag