Sql 一对多关系的正确数据库架构
我正在建立一个关于汽车的兴趣网站。如果用户单击某辆车,我希望显示所选车的类似车列表 我有一个主表,它存储关于每辆车的基本信息,CarDataMain,表中的两列是CarID(Pk)和similarsid(Fk) 我有另一个表叫做“SimilarCars”,它有三列;相似carsid(Pk)、CarGroupID和CarID 因此,SimilarCars表中的SimilarCarsID列与CarDataMain表中的SimilarCarsID列有关系 这是正确的方法还是“最佳实践” 每辆车只能属于一个CarGroup(CarGroupID) 另一个解决方案是创建第三个表,该表保存CarDataMain和SimilarCars数据之间的关系,但由于存在一对多关系,我想这是过度杀戮了?这样我就可以在CardatMain中为所有属于同一汽车组的汽车输入相同的外键值,而这些汽车在某种程度上感觉很吸引人 第三种解决方案是跳过CarDataMain中的SimilarCarsID列,并使CarID成为SimilarCars表中的外键,如果您理解我的意思的话。但我想这个解决方案有一些缺点 对于新手的问题(如果这个问题以前提过),我很抱歉,但我想在开始之前把它弄清楚:)Sql 一对多关系的正确数据库架构,sql,database-design,database-schema,Sql,Database Design,Database Schema,我正在建立一个关于汽车的兴趣网站。如果用户单击某辆车,我希望显示所选车的类似车列表 我有一个主表,它存储关于每辆车的基本信息,CarDataMain,表中的两列是CarID(Pk)和similarsid(Fk) 我有另一个表叫做“SimilarCars”,它有三列;相似carsid(Pk)、CarGroupID和CarID 因此,SimilarCars表中的SimilarCarsID列与CarDataMain表中的SimilarCarsID列有关系 这是正确的方法还是“最佳实践” 每辆车只能属于
Ludde注:重新编写
- 设计表来描述诸如
,汽车
,其他集团
- 使用“联接表”提供所需的一对多关系
-主键CarID
-主键GroupID
-组的名称Name
GroupID
可能不是必需的。如果Name
是唯一的,则将其用作主键
车组
-车表外键CarID
-组表的外键GroupID
-FK到车辆表CarID
-Fk到Car表SimilarCarID
一个约束,使CarId不能匹配SimilarCarID——除非您确实希望汽车与自身相似。但是如果是这样的话,那么只需阅读car表即可。注意:重新编写
- 设计表来描述诸如
,汽车
,其他集团
- 使用“联接表”提供所需的一对多关系
-主键CarID
-主键GroupID
-组的名称Name
GroupID
可能不是必需的。如果Name
是唯一的,则将其用作主键
车组
-车表外键CarID
-组表的外键GroupID
-FK到车辆表CarID
-Fk到Car表SimilarCarID
一个约束,使CarId不能匹配SimilarCarID——除非您确实希望汽车与自身相似。如果是这样的话,那就看一下汽车表吧。我想你的概念需要先弄清楚。“相似的车”不是同一“组”中的车吗?如果是,你只需要一个学期。由于“group”是一个保留字,所以最好使用其他词 我将使用“类别”一词。所以我的Cars表将有一个CategoryId列。想象一下前端的页面,有人会在那里添加新车,他们不是有一个下拉列表来选择类别吗 所以我的模型是:
Cars
-Id (PK)
-Name
-CategoryId (FK to Categories)
...
Categories
-Id (PK)
-Name
我认为你的概念需要先弄清楚。“相似的车”不是同一“组”中的车吗?如果是,你只需要一个学期。由于“group”是一个保留字,所以最好使用其他词 我将使用“类别”一词。所以我的Cars表将有一个CategoryId列。想象一下前端的页面,有人会在那里添加新车,他们不是有一个下拉列表来选择类别吗 所以我的模型是:
Cars
-Id (PK)
-Name
-CategoryId (FK to Categories)
...
Categories
-Id (PK)
-Name
在不深入细节的情况下,让我们假设我描述的是我想要的(一个类似的CARS表)。(我已经写了一个详细的解释,但是它包含了太多的字符,对不起…)。有关我为什么需要SimilarCars表的详细信息,请参阅我对JBrooks的回答。然而,你在上面写的关于“SimilarCar”的部分感觉很到位!考虑到我对JBrooks的回答,我想这就是我们的方向了吧?非常感谢各位。不必详细说明,我们假设我所描述的就是我想要的(一个类似的CARS表)。(我已经写了一个详细的解释,但是它包含了太多的字符,对不起…)。有关我为什么需要SimilarCars表的详细信息,请参阅我对JBrooks的回答。然而,你在上面写的关于“SimilarCar”的部分感觉很到位!考虑到我对JBrooks的回答,我想这就是我们的方向了吧?谢谢大家,谢谢你们的回答。我做的和你上面的模型一模一样。“问题”在于