我知道你可以在SQL中使用外鍵「引用」另一個表,這將在表1中的該條目(FK)和表2中的主鍵之間建立連接。如何將數組存儲在SQL表中?
我想擴展這個概念使n有'表2'。
我手邊的任務是表1表示任務列表,表2表示任務本身,我想爲每個任務列表存儲n個這樣的任務。
我特別使用postgres,但我想知道在香草SQL中的答案(以便更容易理解)。
我知道你可以在SQL中使用外鍵「引用」另一個表,這將在表1中的該條目(FK)和表2中的主鍵之間建立連接。如何將數組存儲在SQL表中?
我想擴展這個概念使n有'表2'。
我手邊的任務是表1表示任務列表,表2表示任務本身,我想爲每個任務列表存儲n個這樣的任務。
我特別使用postgres,但我想知道在香草SQL中的答案(以便更容易理解)。
我想擴展這個概念,以便有n個表2。
我手邊的任務是表1表示任務列表,而 表2是任務本身,我想爲每個 任務列表存儲n個這樣的任務。
想想它的另一種方式。
每個task
(表2)必須具有表1中相應PK的FK。並且可能有許多任務引用表1中的相同PK(那麼基本上是您的「任務列表」)。
這是一個1:N
的關係。 FK應該設計在「N側」,而不是在關係的「單側」。
在這個問題的選定答案中,什麼是cwallenpoole? http://stackoverflow.com/questions/6360739/how-to-store-array-or-multiple-values-in-one-column?rq=1我的執行過程中是否需要一個類似的映射表? – cst1992
不,你需要一個映射表用於'N:M'-關係。對於'1:N'關係來說,將FK放在'N-side'的表格中是足夠的並且是可取的,該'N-side'參考在「單面」的另一個表格中的(一個)對應的數據行。 –
只要一個任務總是屬於* one *特定的任務列表,那麼這裏就有一個'1:N'的關係。 –
關係數據庫基於關係。所以,我們先創建表格。
TaskList
--------
TaskList ID
Task ID
Task Number
Task Priority
Start Time Stamp
End Time Stamp
...
TaskList ID是主鍵。任務ID是任務表的外鍵。任務編號是用戶分配給該任務的編號。任務優先級是用戶分配給任務的優先級。
我們有2個表格,所以我們可以在任務列表表格中將任務與其時間順序分開。當您重複執行任務時,我們也可以節省一點空間。
Task
----
Task ID
Task Description
...
在Java中,我們沒有關係。我們有物體。所以,爲任務創建一個Java對象是很好的。
package com.ggl.testing;
import java.util.Calendar;
public class Task {
private int taskNumber;
private int taskPriority;
private Calendar startTimestamp;
private Calendar finishTimestamp;
private String description;
public int getTaskNumber() {
return taskNumber;
}
public void setTaskNumber(int taskNumber) {
this.taskNumber = taskNumber;
}
public int getTaskPriority() {
return taskPriority;
}
public void setTaskPriority(int taskPriority) {
this.taskPriority = taskPriority;
}
public Calendar getStartTimestamp() {
return startTimestamp;
}
public void setStartTimestamp(Calendar startTimestamp) {
this.startTimestamp = startTimestamp;
}
public Calendar getFinishTimestamp() {
return finishTimestamp;
}
public void setFinishTimestamp(Calendar finishTimestamp) {
this.finishTimestamp = finishTimestamp;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
正如您所看到的,您必須閱讀TaskList表和Task表才能創建Task對象。當用戶創建一個新的Task對象時,你必須寫一行到TaskList表和任務表。
當您加入任務列表和任務表時,您可以創建一個任務實例列表,並選擇多行。
這個問題並沒有爲我顯示任何的努力。你有什麼嘗試?如果答案是「沒有」,請查看w3schools上的[巡迴]和搜索結果。 – inetphantom
這是一個新概念,我正在尋找一些指針。是的,我已經看過一些書,但是我的老闆對我不利。 – cst1992
看看[http://www.w3schools.com/sql]是真正的基礎知識。也許直接跳過去約束 – inetphantom