多个表的 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 列,用作查找

然后我将创建另一个表CarsId, CarBrandId, ColorId (From Colors Table), Description,这是您的包含用户记录的表。

与您的其他实体相同。我建议你搜索一下Entity Relationship Diagrams,这是一种帮助你做出好的设计的好方法。

也看看这个old *** question,这会对你有所帮助。

【讨论】:

您提供的旧链接有几个网站很好地完成了模型开发 - 我只需要找到如何使用联结表进行搜索等操作。很好的阅读并感谢您的反馈

以上是关于多个表的 SQL 结构的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 表和索引存储结构

SQL如何把查询出来的多个表创建成一个临时表

SQL如何把查询出来的多个表创建成一个临时表

SQL性能问题.现在表设计可以把一个大表按类型(各类型字段不相同)拆分成多个小表.拆分后比较方便.

如何实现多个SQL数据库同样结构的表同步更新!

mybatis sql返回多个参数