Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 在bug/bug状态模型中,外键将驻留在哪里?_Database_Database Design_Foreign Key Relationship - Fatal编程技术网

Database 在bug/bug状态模型中,外键将驻留在哪里?

Database 在bug/bug状态模型中,外键将驻留在哪里?,database,database-design,foreign-key-relationship,Database,Database Design,Foreign Key Relationship,我总是卡在外键上,因此我有一个问题:外键应该位于错误跟踪系统的何处,在该系统中,错误在任何给定时间都只有一个状态,而只有少量状态存在(打开、正在调查、已解决、待批准)。因此,每个状态都有许多与之相关的bug。我的假设是外键应该作为status\u id列驻留在Bug表中,该列引用status表中的id列。这是一个安全的假设吗 TABLE: Bug id integer desc string status_id integer fk Status

我总是卡在外键上,因此我有一个问题:外键应该位于错误跟踪系统的何处,在该系统中,错误在任何给定时间都只有一个状态,而只有少量状态存在(打开、正在调查、已解决、待批准)。因此,每个状态都有许多与之相关的bug。我的假设是外键应该作为status\u id列驻留在Bug表中,该列引用status表中的id列。这是一个安全的假设吗

TABLE:
    Bug
    id integer
    desc string
    status_id integer fk

    Status
    id integer
    desc string

RAILS MODEL:
    Bug
    has_one :status

    Status
    has_and_belongs_to_many :bugs

是的,你的假设是正确的。只要每个Bug只有一个状态,您就可以将外键包含到该表中。

是的,您的假设是正确的。只要每个Bug只有一个状态,您就可以将外键包含到该表中。

是的,这是正确的。考虑到这一点,你的bug有一个状态;任何给定状态都有许多错误。

是的,这是正确的。考虑到这一点,你的bug有一个状态;任何给定状态都有许多错误。

您的假设是正确的,更重要的是,关系(一个多/一个一个多/多个)决定了哪个表是主键表,哪个表是外键表


在这种情况下,状态表在此处明确包含FK关系的主键。如果是另一种情况,那么每个状态都必须先存在于Bug表中,然后才能存在于状态表中,这显然不是有意的。

您的假设是正确的,更重要的是关系(一个多/一个一/多个)决定哪个表是主键表,哪个表是外键表


在这种情况下,状态表在此处明确包含FK关系的主键。如果情况正好相反,那么每个状态都必须先存在于Bug表中,然后才能存在于status表中,这显然不是有意的。

“FK关系的主键”。(抓着我的头)。这就是我不喜欢外键的原因。对不起,编辑它以增加清晰度。MSDN也有助于更清楚地解释:谢谢。MSDN链接很棒,“FK关系的主键”。(抓着我的头)。这就是我不喜欢外键的原因。对不起,编辑它以增加清晰度。MSDN也有助于更清楚地解释:谢谢。MSDN链接很棒。