【问题标题】:SQL Structure for several tables多个表的 SQL 结构
【发布时间】: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,其中每一行是只有一辆车的一个实例。

我遇到的问题是了解主键和外键需要在哪里才能让我能够组织数据:

  1. 按每辆选择的车辆及其字段
  2. 按象限,显示每辆车及其各自的字段

计算汽车的用户应该能够输入车辆类型、字段值和它所看到的象限,并且数据库被填充 - 然后我需要按象限调用数据来分析数据。

我不知道是否或如何使用 JOIN 语句?如何构建此数据库以满足我的需求?

FWIW,dba.stackexchange 说基本的 SQL 问题属于这里,所以我希望我来对了地方。

【问题讨论】:

    标签: mysql sql sql-server


    【解决方案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 StackOverflow question,这会对你有所帮助。

    【讨论】:

    • 您提供的旧链接有几个网站很好地完成了模型开发 - 我只需要找到如何使用联结表进行搜索等操作。很好的阅读并感谢您的反馈
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 2016-11-04
    • 2019-08-04
    相关资源
    最近更新 更多