【发布时间】:2020-03-31 23:53:24
【问题描述】:
我目前有三个表来跟踪特定条目的更改,但似乎我最终得到了大量条目,我不确定这是否是最好的方法。
我的第一个表格包含基本信息,第二个和第三个表格包含我每 8 小时抓取的额外条目。
ID | creation_date | removal_date | article_url | status 这基本上是最稳定的条目。在我们禁用/删除条目时,只有 Status 和 removal_date 会发生变化。
例子:
ID | creation_date | removal_date | article_url | status
---|------------------|------------------|-------------|-------
1 | 10/01/2020 20:00 | NULL | http://xxx | 1
2 | 23/01/2020 10:00 | 27/01/2020 13:00 | http://xxx2 | 2
3 | 10/02/2020 15:00 | NULL | http://xxx3 | 1
Status 1 = Active
Status 2 = Inactive
第二个表包含其他所有内容:
ID | main_id | last_update | title | description | views | rating | comments
只要有变化,第二个表就会每 8 小时创建一个新条目。然后根据此处添加的条目,我显示每天/每周/每月的平均观看次数/评分/cmets 变化。
例子:
ID | main_id | last_update | title | description | views | rating | comments
---|---------|------------------|----------------|--------------------|-------|--------|---------
1 | 1 | 10/01/2020 20:00 | First Article | Description.. | 1 | 1 | 0
2 | 2 | 23/01/2020 10:00 | Second Article | Desc.. | 1 | 1 | 0
3 | 1 | 11/01/2020 20:00 | First Article | Description update | 15 | 3 | 2
4 | 1 | 12/01/2020 20:00 | 1st Article | Description update | 30 | 5 | 4
5 | 3 | 10/02/2020 15:00 | 3rd Article | Descript! | 3 | 1 | 1
第三个表包含标签:
ID | main_id | tag_id | date_added | date_removed
我想而不是有一个状态来添加一个空的 date_removed 以便以防标签被更新/删除/等更新该部分。标签保存在单独的表中,只需获取 id 并将两者之间的连接存储在这里。
例子:
ID | main_id | tag_id | date_added | date_removed
---|---------|--------|------------------|------------------
1 | 1 | 2 | 10/01/2020 20:00 | NULL
2 | 1 | 3 | 15/01/2020 16:30 | 17/01/2020 13:00
3 | 2 | 3 | 23/01/2020 10:00 | NULL
4 | 3 | 5 | 10/02/2020 15:00 | NULL
5 | 1 | 5 | 11/02/2020 17:00 | NULL
我只是想知道是否有更好/更合适的方式来存储上述数据。
【问题讨论】:
-
请简洁明了,很难理解你在处理什么样的数据,因此很难评估如何建模数据。
-
@digitai 现在我添加了示例表是否更好?
-
date_added与creation_date的值是否相同?removal_date和date_removed呢?换句话说,每篇文章有多少个不同日期,包括NULL? -
我在描述中迷路了。这些表中的任何一篇文章都可以有多行吗?
标签: mysql database database-design