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 是否看起来“合理”?欢迎提出任何意见和/或问题。
谢谢你的时间!
公共广播
在阅读了大量内容并收到有关SQL 数据规范化的提示后,我想到了这个模式。其余的将通过简单的请求处理:
key db | user_made_id | description | date | blob_picture | rss_feed | twitter_alias/keyword/hashtag |
key db| index-at-table1| tw_option|tw_user | tw_date | tw_location | tw_name |tw_text
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