2011-07-06 37 views
0

我有一個名爲SUBJECT的表,其中的字段爲SUBJ_IDSUBJ_NAME。另一個表稱爲COURSES,其字段爲COURSE_NAME,SUBJ_NAMESUBJ_ID。我的目標是當SUBJ_NAME被輸入到COURSE表中時,自動更新COURSE表中的SUBJ_ID表,SUBJ_ID表中的SUBJ_ID表和SUBJECT表。將數據從一個MySQL表傳輸到另一個W /參數

例如,SUBJECT表中有如下數據:

+-----------+-------------+ 
| course_ID | course_name | 
+-----------+-------------+ 
|  1  | math  | 
|  2  | physics  | 
+-----------+-------------+ 

如果我進入COURSES表:

INSERT INTO `courses` VALUES('Algebra 101', 'Math'); 

我怎麼能就自動更新SUBJ_ID等於1?

+0

從COURSES表中刪除SUBJ_NAME,其冗餘。.google數據庫正常化 – slier

回答

3

你的表模式更改爲類似如下:

課程表

+-----------+---------+------------+ 
| course_id | subbj_id|course_name | 
+-----------+---------+------------+ 
|  1  | 1  | math  | 
|-----------+---------+----------- + 

主題表

+-----------+-----------+ 
| subj_id | subj_name | 
+-----------+---------+-+ 
|  1  | math  | 
|-----------+-----------+ 

courses表擺脫subj_name的(因爲它的冗餘並可能導致數據更改像你的情況一樣)。這將標準化您的數據,並且您將能夠通過連接獲取信息。

如果您有一個帶有subj_id和subj_name的主題表,那麼subj_id應該是您的主鍵(唯一標識符)。你的第二張表,課程應該有course_id,course_name和subj_id。 course_id應該是您的主鍵(唯一標識符)。然後,您將在主題表中的subj_id與課程表中的subj_id之間具有一對多的外鍵。

一旦設置完畢後,您將使用此查詢:

select c.course_name, s.subj_name from courses AS c inner join subject AS s on c.subj_id = s.subj_id; 

這將拉動它屬於課程和主題。

當您需要更新主題名稱時,您現在只需將其更改爲一個位置subject.subj_name,並且由於關係而將其傳播。

如果所有這些太多,請閱讀規範化數據並正確設置關係。

祝你好運!

相關問題