单个或多个ID用于相同的值但处于不同的状态/问题

时间:2011-05-15 19:12:24

标签: mysql database-design

我的查找值为“未读”。它在这里使用: 邮件可以是已读或未读。 (所以我有ID 10 =读取,ID 11 =未读)。现在在UI中我有显示过滤器,我可以通过预定义过滤器对消息进行排序,其中一个是“未读”所以问题是:两种情况下的ID都是11还是我为Unread创建了两个单独的值 - 一个对于消息状态和一个用于显示排序?

这些数据的使用是2倍:
1)根据FK查找ID,引用其主要动作 2)报告:如果我想查看有多少用户使用未读过滤器为未读邮件排序,在这种情况下我可以轻松获得该号码 - 使用两个ID(每个问题一个(消息状态和显示排序)或仅一个ID ?

1 个答案:

答案 0 :(得分:1)

读取/未读取的状态值是消息项的属性,而不是GUI或用户的属性。用户选择的过滤器状态是用户的属性,而不是消息。

如果你在这两个相似但独立的代码列中使用相同的值是有意义的话,那就没问题了。

您需要将消息状态存储为消息的列(除非您要跟踪消息状态的历史记录,在这种情况下,它必须进入消息的子表)。您需要为用户表上的每个用户存储当前筛选器选择状态。我无法想象为什么你想要历史记录,因此用户表上的一个列应该可以解决这个问题。

如果消息表中的未读是“11”并且用户表中的未读也是“11”那么这很好,但这很巧合,你要小心在你的代码中对此做出任何假设。当你开始添加其他过滤器组合时,整个方案可能会崩溃,除非你承诺在你的用户/ gui过滤器选择表中有匹配的属性对,以及与你的过滤器选项对齐的任何消息属性。