【问题标题】:How do I reference table B rows twice from table A?如何从表 A 中两次引用表 B 行?
【发布时间】:2023-04-09 18:54:02
【问题描述】:

我是数据建模新手,请原谅新手问题:

如何在 2 列中对同一个表进行两次引用?如果我只是做了一次引用,我会通过调用列 LocationID 将它们链接在一起。例如。我有一个名为 Locations 的表和一个名为 Tours 的表:

地点: 身份证(PK), 国家, 状态, 街道地址, 等等

游览: 身份证(PK), 开始位置(我如何做这个参考?), 结束位置(还有这个?), 去过的地方, 描述, 成本, 日期, 等等

【问题讨论】:

    标签: sql database database-design relational-database data-modeling


    【解决方案1】:

    你的意思是这样的吗?

    CREATE TABLE locations
    (
      id INT NOT NULL,
      country VARCHAR(64),
      state  VARCHAR(64),
      street_address  VARCHAR(64),
      PRIMARY KEY(ID)
    );
    
    CREATE TABLE tours
    (
      id INT NOT NULL,
      start_location INT NOT NULL,
      end_location INT NOT NULL,
      description VARCHAR(255),
      cost DECIMAL(19,2),
      date DATE,
      PRIMARY KEY(ID),
      FOREIGN KEY (start_location) REFERENCES locations (id),
      FOREIGN KEY (end_location) REFERENCES locations (id)
    );
    

    这里是SQLFiddle演示

    【讨论】:

      【解决方案2】:

      给表名起别名,然后用它们的新名称引用它们,就好像它们是单独的表一样,例如:

      SELECT
        *
      FROM
        TOURS
      JOIN
        LOCATIONS START_LOCATION ON
        START_LOCATION.LOCATION_ID = TOURS.START_LOCATION
      JOIN
        LOCATIONS END_LOCATION ON
        END_LOCATION.LOCATION_ID = TOURS.END_LOCATION
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多