2011-06-02 93 views
3

美好的一天!我是否違反了我的數據庫設計中的任何NF規則?

我是創建數據庫的新手......我需要爲我的招聘網站應用程序創建一個數據庫。

我的數據庫架構如下: enter image description here

注:我包含在其他表applicant_id ...例如考試,面試,考試類型。

我違反任何規範化規則嗎?如果我這樣做,你有什麼建議來改進我的設計?謝謝

+0

如果申請人真的是你的執政實體,那看起來不錯。 – Till 2011-06-02 13:43:36

回答

4

整體看起來不錯。需要考慮的幾點:

  • 訪問者也是一個人。您將需要使用程序邏輯來防止不同/拼寫錯誤。
  • 我見過的最長真人郵箱地址是62個字符。
  • 在考試使用保留字date爲列名
  • (主觀)我會重新命名applicant_date到applied_at
  • 我沒有看到一個郵遞/郵政編碼爲申請人
  • 所有result列VARCHAR(4)。如果他們使用相同的值,他們是否可以正常化?
  • 出生日期是更好地存儲年齡。你不想安排某人面試他們的出生日期(或者如果你本性殘忍,你確實需要:))。年齡可以從中推導出來,並且在任何時候都是正確的。

編輯: 鑑於結果是通過或失敗,只需聲明該字段布爾值並命名爲「通過」。快得多。

+0

我看過更長的電子郵件。 – HLGEM 2011-06-02 13:56:35

3

我可以看到一個潛在問題的一個領域是面試官被整合到面試中。此外,我想指出申請人的來源渠道,可能會導致發生泡沫(取決於您將要在那裏存儲的內容)。

+1

好點。面試官應該是一個獨立的實體。 – Till 2011-06-02 13:52:03

1

乍一看,您似乎沒有違反任何規範化規則。但是,從架構設計中不清楚,applicant_id是引用申請人表格。確保在實際實施scehma時將其聲明爲引用申請表的外鍵。

不對數據做出任何假設,但篩選的結果可以存儲在4個字符中嗎?

+0

篩選結果==合格或不合格。是的,我已經宣佈它是一個外鍵。謝謝。 – newbie 2011-06-02 13:52:58

1

年齡和性別通常是非法的問題,在面試中要問,所以你可能不想記錄這樣的事情。你可能需要一個單獨的面試官表。您還可能需要一個存儲資格的單獨表格,以便您可以在下一次出現問題時搜索已接受C#知識訪談的人員。我可能會做一些類似於資格表的工作,即查詢您想要添加到申請人的資格表中。然後,您需要申請人資格表中的資格編號,申請人編號,年數,技能等級。

我注意到結果是一個varchar 4字段,我假設你打算把通過/失敗。我會考慮有一個數字分數。那個得到80%問題的人通過了,但那些得到100%正確答案的人可能是更好的候選人。事實上,面試時我可能會面試問題和結果表。然後,您可以記錄分數以及有關每個問題的任何評論,以便以後評估很多考生。當我們訪問數百人時(我們當時有超過一百個開口,這是個人電腦的前景),我們在紙電子表格中手動完成了這項工作,並發現它能夠比較問題的答案。很難記得你採訪過的200人,以及誰說了些什麼。當你有新的開放時間時,可能會有所幫助,以找到那些在面試時可能沒有找到工作的最適合新工作的問題的人(例如5個優秀的候選人,1個工作崗位)。

我可能還會考慮一個字段來標記候選人由於某種原因是否永遠不能僱用。比如他犯了重罪,或者他在簡歷上撒謊,而你在他面試時抓到了他,或者他完全無能爲力。這可以很容易地防止這個人被重複考慮。

1

我認爲你的數據庫結構對未來的使用有很多限制。例如,你甚至可以有一個考試的描述,因爲這個穩定的商店的分數和考試日期。這可能是因爲這種信息已經存儲在另一個系統中,你只能設計結果容器。但即使如此,考試,屏幕和麪試只是一種測試形式,爲什麼有關信息應該存儲在一張表中,並通過某種類型的ID進行區分。如果您決定這種方法,你必須創建另一個表來存儲有關結果

的信息所以該定義應該看起來更像是這樣的:

TEST 
TEST_ID 
TEST_TYPE_ID ref TEST_TYPE - Table that define the test type 
TEST_REQUIRED_SCORE - The value of the score that need to be reach to pass the exam. 
... - Many others properties of TEST like duration, expire date, active inactive etc. 

APPLICANT_RESULTS 
APPLICANT_ID ref APPLICANT 
TEST_ID = ref TEST 
TESTS_DATE - The day of exam 
TEST_START - The time when the test has started 
TEST_FINISH - The time when the test has ended 
APPLICANT_RESULT - The applicant result of taken test. 

這種結構更靈活,給簡單的方法來指定表測試的要求,這樣

TEST_REQUIREMENTS - Table that specify the test hierarchy and limitation 
TEST_ID ref TEST 
REQUIRED_TEST ref TEST 
ORDER - the order of exams 

另一種情況是,在未來的僱主將要切換到電子考試系統。在這種情況下,只有想你會需要的是什麼:

  • 創建表,將存儲的問題定義
  • 將存儲問題的答案木箱表(一個問題,可以在考試,屏幕或面試中使用)。
  • 創建將存儲關於測試問題的信息的表。
  • 創建表格以存儲申請人給出的每個問題的答案。
  • 觸發器將更新測試的所有分數。
相關問題