2016-04-23 102 views
0

我創建了一個Access數據庫來保存學生實習信息。我遇到的問題是我有三張與實習表(分配,主管評估和學生評估)有唯一關係的表。1-1關係的單獨表格

由於Access不允許表中有多個自動生成的數字,我不能讓實習表爲這三個表中的每一個創建ID號。所以,當我們向這些表格中輸入數據時,我不確定如何使它成爲現實,我可以將其專門分配給實習。有什麼建議?

enter image description here

回答

1

1-1的關係總是聞起來像他們應該合併爲一個表。如果他們實際上是1-1而且不應該是1-0,1,那麼尤其如此。在後一種情況下,如果依賴信息可能會丟失,並且在大多數情況下都會丟失,將它分離出來放入自己的表中可能會有所幫助。但是,即使這可以通過給某些屬性賦予null值來表達。

現在,如果由於某種原因而堅持使用這4個表格,則有兩種方法可用於主鍵。一種是,對於從屬表而言,不要將主鍵聲明爲自動生成,而是將其聲明爲數字,並將實體記錄的自動生成的值分配給它。另一種方法是爲每個從屬表自動生成一個主鍵,並在Intership表中爲其中的每個鍵分配一個外鍵。由於我認爲這些從屬表的整個構造是不必要的複雜,所以我不能推薦哪種方法更好。

我還有一個關於你的數據模型的問題。你的表具有像answer1,answer2,...這些屬性現在,如果你有一小部分固定的屬性,這可能沒問題。但是,您是否可以針對每種類型的實習提供更多的固定問題,這些問題可能會動態變化,並且不能僅僅由固定列結構來表示?在這種情況下,你會需要像

Question(id, text) 
Internship(id, ...) 
Answer(id, internship_id, question_id, student_answer, supervisor_evaluation) 

所以,你的基數將

Internship 1-----0,n Answer 0,n------1 Question 

同爲實習的其他細節。

+0

我真的不介意將它們合併成一張表,但是不存在某種數據庫「規則」,即擁有這麼大的表是壞的? – Saverio

+0

請參閱我爲此編輯的答案。 – TAM

+0

這些問題都是靜態的。他們已經超過5年了。不過,我同意你的看法,我認爲有比我所做的更好的方法。 我想到的解決方案是將作業id與internshipId相同,但沒有連接它們。我只是使用組合框來選擇實習,並將ID輸入到assignmentId中。 – Saverio