我有一个关于如何关联两个表的问题。
问题是我不知道要为这个例子创建什么类型的关系。
考虑到在我的 FUEL 表中,我有 2 条记录:
IDcombustible | Combustible
---------------------------
1 | Diesel
2 | Gasolina
现在我输入一个引擎并为其分配燃料类型。1号是柴油。
idmotor | tipo_motor | combustible_idcombustible
------------------------------------------------
1 | '2.5cc' | 1
现在的问题是我需要输入另一个“2.5cc”发动机,但它存在于汽油上。
idmotor | tipo_motor | combustible_idcombustible
------------------------------------------------
1 | '2.5cc' | 2
当我这样做时,我意识到我再次在 MOTOR 表中输入了另一条记录,其中列tipo_motor
的值为 2 '2.5cc'
,但列combustible_idcombustible
的值为 2。我认为这是不正确的,因为存在数据冗余。
关联这两个表的正确方法是什么?
听起来您需要创建一个额外的表来支持表
motor
和combustible
. 这将使您的数据冗余更少。所以:在那里你关联两个表的记录。
以防万一,这样做意味着您将不得不删除 table
combustible
和 table之间的直接关系motor
。对以下问题的分析可以指明方向:发动机可以使用不同类型的燃料吗?一种燃料可以用于不同的发动机吗?如果两个答案都是正确的,您可以使用“多对多”关系,该关系利用发动机和燃料之间的中间表,例如 engine_fuel,它将包含发动机 ID 和燃料 ID(从燃料中删除 id从引擎表)。
这样,您将只存储引擎和燃料之间的关系。如果您想深入研究如何避免数据冗余,我邀请您研究数据库规范化。
类似于 Luiggi Mendoza 所说的,并且不忽略数据库引擎,您可以使用两个表来完成,就像在您的图表中一样:
你的第二张桌子看起来像这样: