2012-10-31 189 views
1

我是數據庫結構和設計的新手。目前,我正在創建一個課程目錄,根據課程名稱和日期匹配課程描述。我畫了一張描述課程的表格,其中包括course_code,name和其他所有相關信息。然後我勾畫了另一張表格,將這些課程與他們的教學時間聯繫起來。數據庫:表設計/結構

我缺少歸類爲all_year的班級。此外,我錯過了一種如何標記主要課程的方法。由於假設一門課程可能屬於幾門專業,因此將數據從一門課程放入另一門課程將迫使您複製數據。任何想法如何將這兩件事情實現到我的表格設計?或者關於如何重組我的設計的建議。如果可能的話,請告訴我一個查詢在我的phpmyadmin DB中執行。

表課程示例

id serial 
course_code text 
description text 

表course_dates的例子

id serial 
course_id serial 
year date 
semester 

臺專業的實例

major_id int 
course_id int 

所以填充的數據庫可能包含以下內容:

Table courses 
id course_code description 
1 INF1000  "Basic programming" 
2 INF1001  "More basic programming" 

表course_dates(0秋季春季1)

id course_id year semester 
1 1   2012 0 
2 1   2013 1 
3 2   2013 1 

回答

1

要鏈接課程專業 - 這是一個一對多的關係(一個療程很多專業) - 你想用一個鏈接表有這種類型的結構:

table courses_majors 
major_id int 
course_id int 

還記得索引這張表 - 它非常重要。然後你可以填充它,並有一門課程,甚至去許多專業和許多課程一個專業(多對多的關係)。

然後你可以運行在跨越這個表的表聯接:

select * from courses left join courses_majors on courses.id = courses_majors.course_id left join majors on courses_majors.majors_id = majors.id

當然,你可以添加一個where子句等

的另一種方法是創建一個表專業:

majors 
id int 
name varchar 

一個major_id然後添加到您的課程表 - 這將只是給你的課程,專業的一對一的關係,但馬NY課程可以加入一個專業。

至於每年,我也只是在數據庫中添加一個字段來解決這個問題,可能是一個小小的int和只是讓0或1

+0

+1謝謝。我已經用你的建議更新了我的問題。鏈接表是我不知道該怎麼做的。你能否寫一個查詢來創建這三個表並將它們聯繫起來? – techAddict82

+0

你只是想創建另一個表: 創建表courses_majors(courses_id int(32),majors_id int(32)) – Michael

+0

鏈接查詢已經在答案 – Michael