Pregunta

Siempre se queda atascado en las claves externas, así que tengo una pregunta acerca de dónde la clave externa debe residir en un sistema de seguimiento de errores en los que un error tiene un solo estado en un momento dado, mientras que existe sólo un pequeño número de estados (abierto, bajo investigación, resuelve, Pendiente de aprobación). Por lo que cada estado tiene muchos errores asociados a ella. Mi suposición es la clave externa debe residir en la tabla de errores como una columna status_id referencia a la columna id de la tabla de estado. ¿Es esta una suposición segura?

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
¿Fue útil?

Solución

Tiene razón en su suposición de que es más importante entonces la relación (uno-muchos / uno-uno / muchos-muchos) es decidir qué tabla es la tabla de clave principal y que es la tabla de clave externa?

En este caso la tabla de estado contiene claramente la clave primaria de la relación FK aquí. Si era al revés, entonces cada estado tendría que existir en la tabla de errores antes de que pudiera existir en la tabla de estado, lo que claramente no se pretende.

Otros consejos

Si estás en lo correcto en ese supuesto. Mientras cada fallo sólo tendrá un único Estado, sólo puede incluir la clave externa a la tabla.

Sí, esto sería correcto. La forma de pensar de esto sería que el insecto tiene un estado; hay muchos errores con cualquier estado dado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top