0

我当前的数据库由以下表格组成。

存储用户对给定问题的评分 -

user( uid(varchar), qid(varchar), rating(varchar), primary key(uid, qid) )

存储问题及其 id -

questions( uid(varchar), question(text), primary key(qid) )

存储问题之间的关系 -

related( qid(varchar), related_qid(varchar), relation(varchar), primary key(qid, related_qid, relation) )

每个问题至少与另一个问题相关;例如,question1 和 question2 可能相关,因为 question1 的平均评分预计会高于 question2 的平均评分。这种关系将存储在“相关”表中

插入相关(qid、related_qid、relation)值(1、2、gt)
,其中“gt”表示“大于”。

问题是对关系进行编码似乎一点也不优雅。有没有人有更好的解决方案?

4

1 回答 1

1

我会更改列的类型。我认为最好将整数用作快速连接的整数,如果您的数据库中有可用的枚举类型(例如 MySQL 有 ENUM ),qid则可以将其更改为枚举类型related_qidrelated

PS:也可以在没有枚举类型的数据库中模拟枚举,方法是使用一个表来存储可能的值,并对这个表设置一个外键约束。

我也不确定为什么你的用户表有一个两列的主键。我想单列就足够了,但是如果不了解更多有关您的应用程序的信息,就很难确定。

除了这些点之外,它似乎是一个合理的设计。

于 2011-01-08T01:18:03.747 回答