2016-01-14 35 views
0

(我對我的英語提前道歉) 我需要做一個關係模型。我應該如何使這個數據庫模型的關係工作

通常它應該在的團隊做的,但我堅持要獨自一人,所以我對這個

它約一所學校和那種壓倒的事情它的信息有關學生,家長和類他想報名。他們也保持學術成果。

我只是無法得到的,我怎麼能連接所有這些,避免關係問題

http://i.imgur.com/fdwxH8g.jpg

+0

您在建模家庭關係或理解邏輯數據庫關係時遇到困難嗎? – reaanb

+0

一切的一點點。但現在我只是沒有看到我應該在表格中添加什麼以及如何將它們鏈接起來以便它們在一起而不會造成「無限關係」 –

+0

「無限關係」是什麼意思? – reaanb

回答

0

首先一個理想,我建議你添加一個Person表超類型家長和學生,和所有移動Person的個人和聯繫信息屬性。您以後一定要添加其他信息,並且必須爲父母,學生(以及後來的教師和其他學校工作人員)複製所有內容,這會成爲一種麻煩。

person (person_id PK, last_name, first_name, sex, birthday, email, address, city, phone_number, cellphone_number) 

接下來,您是否想記錄親生父母或照顧者?在學校裏,我們通常關心照顧者和他們與學生的關係。要記錄,你可以創建一個關係型表:

relationship (relationship_id PK, description) 

與父親,母親,阿姨,爺爺,fostermother等條目可以再記錄2人,像這樣的關係:

parent (parent_id PK/FK, child_id PK/FK, relationship FK) 

如果你想記錄的親生父母,你可以使用:

bioparents (child_id PK/FK, father_id FK, mother_id FK) 

與父親和母親IDS可以爲空(或分解成的父親和母親單獨的表),因爲我們不可能爲所有學生認識雙方父母。

最後,我們來到了手頭的業務,學生。歷史信息和校友在學校中很重要,因此要注意隨着時間的推移對學生進行建模,而不僅僅是在校學生。你需要考慮學生註冊的時間分辨率 - 每年,每季度還是其他的註冊?對於年度註冊,您可以從以下開始:

student (person_id PK/FK, year) 

現在,什麼是課堂?這是否會隨着時間的推移而復發,或者是在不同的年份/季度中具有相同名稱的課程將事物分開?班級可以包含不同形式/等級/級別的學習者,還是他們的分區?班級是一組學生參加多個科目,還是一個學科特定的分組?我熟悉兩種類型的課程,可以稱爲表格課程和學術課程,但在您所在地區的情況可能有所不同。

使用類表:

class (class_number PK, name, prerequisite, formation_time) 

我們需要學生鏈接到它。如果班級成員是年度活動,我們可以添加到上面的學生關係中,例如現在

student (person_id PK/FK, year, class_number FK) 

,我只是做了表,因爲我跟着去了,但如果你要正確地做到這一點,你真的應該列出/模型的函數依賴你開始做表之前。你可以尋找到一個形式化建模紀律類似對象的角色建模,或至少寫出兩個方向的簡單的邏輯關係:

a Student has one or more Parents 
a Parent has one or more Students 

a Class has a Year 
a Year has zero or more Classes 

a Student has a Class per Year 

對於非二元關係,你不需要寫出來的每方向,但您需要確定哪些屬性組合唯一確定其他屬性。例如,Student和Year的組合唯一確定了Class。

無論如何,這應該給你一個開始。

相關問題