2013-03-02 23 views
0

爲私立學校創建學生管理申請時,添加學生時,用戶必須指定學生來自哪個公立學校,之後申請根據他們來自的學校顯示有關學生的信息,我面對的問題是當用戶爲同一所學校輸入不同的名字時(例如:「abc-paris」,「abc/paris」和「abc paris」將被視爲三所不同的學校),我想的解決方案是一個選擇,而不是示例文本輸入(在HTML),但我覺得這是一個壞的解決方案,因爲:文字輸入還是選擇?

  • 的學校名單可以改變未來,所以我需要創建一個包含的名稱的 數據庫表學校。
  • 我需要做一些額外的工作來管理(添加,刪除)學校。
  • 我覺得創建一個只包含一列的數據庫表是不好的。

那麼你有什麼更好的解決方案來解決這個問題?

回答

1

聽起來好像你的數據模型沒有被標準化。我想你應該在查找表中列出學校名單。學校與學生之間應該有一對多的關係。在用戶界面上,學校應該是一個下拉框而不是文本框。

這裏有一個建議表結構:

CREATE TABLE School (ID int identity, Name varchar(30), primary key (ID)) 
CREATE TABLE Student (ID int, SchoolID INT, primary key (ID), 
FOREIGN KEY (SchoolID) REFERENCES School(Id)) 

INSERT INTO School (Name) VALUES ('School1') 
INSERT INTO School (Name) VALUES ('School2') 
INSERT INTO School (Name) VALUES ('School3') 

INSERT INTO Student (id,SchoolID) VALUES (1,1) 
INSERT INTO Student (id,SchoolID) VALUES (2,1) 
INSERT INTO Student (id,SchoolID) VALUES (3,2) 
INSERT INTO Student (id,SchoolID) VALUES (4,3) 
INSERT INTO Student (id,SchoolID) VALUES (5,3) 
INSERT INTO Student (id,SchoolID) VALUES (6,3) 

公告有兩所學校和六名學生。其中兩名學生上學1,一名學生上學2,三名學生上學3。

用戶界面應該包含一個下拉框供用戶選擇一個學校,例如SELECT ID,名字從學校。姓名應顯示在每個學校的下拉框中,用於選擇學校/學校插入數據庫的ID。

+0

學校只包含一個信息(一列),這就是爲什麼我把它作爲學生表中的一列的名稱,是否有任何規則來規範化數據庫模型,說它是錯誤的將學校名稱放入學生表 – user2080105 2013-03-02 10:00:29

+0

@ user2080105,我用建議的表格結構編輯了我的答案。請注意,您必須將兩個表的自動識別設置爲打開。如果你不知道怎麼做,那就讓我知道。 – w0051977 2013-03-02 10:19:18

+0

謝謝你,但還有一個更重要的問題,爲什麼我可以使用學校桌上的ID,如果我確定這個名字是獨一無二的(沒有同名的學校),所以學校名稱可以作爲主鍵無需添加額外的屬性(ID)! – user2080105 2013-03-02 11:44:46