在SQL

时间:2015-11-02 16:26:02

标签: postgresql database-design foreign-keys relational-database

我想在SQL中的条目之间做出选择。

让我们说处理问题。希望 Geniuses 来帮助我们找到优秀的解决方案。其中一些解决方案很好,有些解决方案很糟糕。因此,一个人必须选择最适合他需要的那个

为了表达选择,我找到了两种方法:

1)在 solutions 表中使用名为 is_chosen 的布尔字段。如果选择了解决方案,则该字段设置为true。

Solution 1

2)在问题解决方案表之间使用第二个关联。默认情况下,此额外外键设置为null,因为尚未选择任何解决方案。这允许问题只有一个唯一的解决方案,但暗示两个实体之间的另一个关联。

Solution 2

在您看来,这两种选择中哪一种最具成本效益?

1 个答案:

答案 0 :(得分:1)

我会选择第一个。为什么?一,因为第二个解决方案创建了一个循环引用,阻碍了您使用sql server的内置pk / fk更新/删除功能。如果您希望使用ORM,它们不支持循环引用。二,因为现实生活中的问题很少有一个最佳解决方案。 Geniuses将提出许多解决方案,并且能够在超过标准的情况下对这些解决方案进行标记/评级将是有帮助的。三,具有成本效益......您指的是读取数据或写入数据的成本效益吗?这是一个权衡。 SQl引擎非常智能,除非您打算使用>您的表中有1亿行而不是计划维护索引,这些差异在读取和写入时都不会引人注意。