2017-08-08 23 views
0

我有一個Crops表,每行對應一個Crop。在SQL表中創建映射到其他表的主鍵的列

在一個單獨的表中,位置,我有每一行對應一個位置。我想在每個位置存儲作物中每種作物的頻率,等等。每個作物和每個地點的頻率明顯不同。 我將如何構建位置表?我做了一些閱讀,並認爲外鍵可能會有用,但我不太明白。我是SQL新手。

我基本上試圖做的是將數據列表存儲在我的位置表中。有什麼辦法讓位置的列與作物的主鍵相對應嗎?更新莊稼時更新位置的解決方案也很棒。

+0

像Barmar說,你應該建立一個多對一對多的關係,要做到這一點,你需要一個結合表,喜歡它這裏解釋:https://support.airtable.com/hc/en-us/articles/218734758-A-beginner-s-guide-to-many-to-many-relationships –

回答

2

需要有單獨的許多一對多表:

CREATE TABLE CropLocations (
    crop_id INT NOT NULL, 
    location_id INT NOT NULL, 
    frequency INT, 
    PRIMARY KEY (crop_id, location_id), 
    CONSTRAINT FOREIGN KEY (crop_id) REFERENCES Crops (id), 
    CONSTRAINT FOREIGN KEY (location_id) REFERENCES Locations (id) 
);