多个表的 SQL 结构
Posted
技术标签:
【中文标题】多个表的 SQL 结构【英文标题】:SQL Structure for several tables 【发布时间】:2015-11-04 10:40:23 【问题描述】:我需要创建一个 mysql 数据库来保存有关车辆的信息。我的直觉是创建一个包含所需列数的表,但后来我读到了这样做的问题。经过研究,我认为我的结构是正确的:
Vehicles Database
Motorcycles Table
id|road|cruising|touring|
Cars Table
id|sedan|coupe|hatchback|
Colours Table
id|green|red|blue|black|silver|white|yellow|etc..
Make Table
id|ford|chevrolet|gm|toyota|bmw|etc..
Quadrant Table (1-4)
id|motorcycle|car|truck
所以基本上我有一个用于对象的表格 - 汽车、摩托车、卡车 - 然后是字段/属性的表格 - 颜色、品牌等,然后是一个用于显示车辆所在象限的表格,并带有一个值1-4,其中每一行是只有一辆车的一个实例。
我遇到的问题是了解主键和外键需要在哪里才能让我能够组织数据:
-
按每辆选择的车辆及其字段
按象限,显示每辆车及其各自的字段
计算汽车的用户应该能够输入车辆类型、字段值和它所看到的象限,并且数据库被填充 - 然后我需要按象限调用数据来分析数据。
我不知道是否或如何使用 JOIN 语句?如何构建此数据库以满足我的需求?
FWIW,dba.stackexchange 说基本的 SQL 问题属于这里,所以我希望我来对了地方。
【问题讨论】:
【参考方案1】:您能说一下,您对数据库的确切需求是什么,即您需要什么功能。
我建议如下表:
1) 车辆表: id|type 可能包含 1|Motorcycle, 2|Car 等信息 2)类别表: id(外键)|类别|颜色,其中包含 1|touring|Black, 2|Car|Hatchback 等信息 3)制作表:(如果您需要创建另一个表) id(表1的外键)|Make
我还没有理解象限表的功能,但是通过这 3 个表,您可以根据需要创建视图并使用它。
【讨论】:
我将编辑问题以描述功能。我没有想到像你那样分组,我在考虑布尔值。感谢您的输入 你需要一张表来分析数据吗,我觉得可以用sql查询来完成。例如,如果用户输入 Car|Hatchback 并且需要查找有多少汽车,select count(*) from vehicle where type = 'car' and id in (Select id from category where type = 'Hatchback' )【参考方案2】:在我看来:
我将创建一个表CarBrands
,其中包含Id, BrandName, Description
列,用作查找。
然后我将创建另一个表Cars
和Id, CarBrandId, ColorId (From Colors Table), Description
,这是您的包含用户记录的表。
与您的其他实体相同。我建议你搜索一下Entity Relationship Diagrams,这是一种帮助你做出好的设计的好方法。
也看看这个old *** question,这会对你有所帮助。
【讨论】:
您提供的旧链接有几个网站很好地完成了模型开发 - 我只需要找到如何使用联结表进行搜索等操作。很好的阅读并感谢您的反馈以上是关于多个表的 SQL 结构的主要内容,如果未能解决你的问题,请参考以下文章