2012-11-14 182 views
0

我正在製作一個用於員工調度的數據庫。我有史以來第一次創建關係型mySQL數據庫,以便我可以高效地管理所有數據。我一直在使用mySQL Workbench程序來幫助我可視化如何去做。這是我到目前爲止有:是,根據圖紙上,我會設定在使用來自其他表引用schedule表的時間表所示如何正確構建我的關係型mySQL數據庫

Mock Up

我在我的腦袋已經合照。然後當我需要顯示這個時間表時,我會從schedule表中取出所有內容。每當我在過去使用數據庫時,它都不是標準化類型,所以我只需將數據輸入到一個表中,然後從該表中提取數據。現在我正在處理一個更大的項目,我確信把所有的表格都這樣分開(標準化)是一條可行的路線,但我很難看到最後所有的東西是如何結合在一起的。我有一種感覺,它不能像我所描繪的那樣工作,@ grossvogel指出我認爲對於使這一切工作起關鍵作用,並且使用join函數來提取數據。

我開始使用關係數據庫的原因是,如果我改變了(例如)shift表,而不是記錄1是「AM」,我希望它是「早上」,它會自動通過cascade選項更改相關部分。

我發佈這裏的原因是因爲我希望有人能幫助填補空白並指向正確的方向,所以我不花很多時間才發現我犯了一個錯誤在開始時轉向。

+1

做日程安排和員工需要引用license_mat嗎?除此之外,你在哪裏看到你的問題?你建立了這個數據庫並且玩了嗎?這可能會幫助您開始使用關係數據庫。 – Argeman

+0

@Argeman不,你說得對,只需要引用員工。我想這是我混亂的一部分,我已經更新了我的問題,試圖在這方面多說一些。 –

回答

3

也許你錯過了一塊是使用joins的查詢從多個表中提取數據的想法。例如(僅僅包含一對夫婦的表):還

SELECT Dept_Name, Emp_Name, Stat_Name ... 
FROM schedule 
INNER JOIN departments on schedule.Dept_ID = departments.Dept_ID 
INNER JOIN employees on schedule.Emp_ID = employees.Emp_ID 
INNER JOIN status on schedule.Stat_ID = status.Stat_ID 
... 
where .... 

注意a schedule table that contains all of the information needed to be displayed on the final page不是關係數據模型的精神。您希望每個表在您的應用程序中爲某個實體建模,因此,如果每行代表一次移位,將schedule重命名爲shifts可能更合適。(我通常使用單數名稱表格,但有multiple perspectives那裏。)

+0

我認爲你剛剛爲我填補了一個大洞,我無法弄清楚的其中一件事是如何從所有不同的表格中提取數據。我認爲我的頭會爆炸。 –

+0

我花了一兩天的時間才真正瞭解這一點,最終你總結得很好。我很難看到,但現在我有信心理解我需要採取的道路。再次感謝您的幫助 :) –

1

坦率地說,這是一個很難回答的問題,因爲你可以得到一百萬個不同的答案,每個答案都有自己的優點。我建議你看看這些(有可能是更好的聯繫在那裏過,這些只是好像好點要注意):

http://www.devshed.com/c/a/MySQL/Designing-a-MySQL-Database-Tips-and-Techniques/

http://en.wikipedia.org/wiki/Boyce%E2%80%93Codd_normal_form

http://www.sitepoint.com/forums/showthread.php?66342-SQL-and-RDBMS-Database-Design-DO-s-and-DON-Ts

我'd還建議你嘗試解釋你想要實現的更詳細的內容,而不是僅僅發佈表結構,讓我們試着弄清楚你所做的事情是什麼意思。

通常通過口頭解釋某些事情,你可能會在沒有任何其他人的意見的情況下達成所需的實現!

有一件事我會提的是,你不必denormalise表報告某些值加在一起,你應該考慮的意見對那種事......

+0

感謝您的意見。我閱讀了您發佈的鏈接,並在那裏獲得了一些很好的信息。我應該提到我在mySQL領域非常舒服,因爲我過去曾經使用過很多數據庫,但這是我第一次需要對它們進行規範化處理,這主要是我被絆倒了上。乾杯。 –

+0

我實際上有點害怕,這是你第一次不得不規範化一組表格......根據我的經驗,規範化是你開始的地方,只有當你需要優化特定的查詢時,看着去規範化。 – adhocgeek

+0

這是完全合理的說法,一旦我開始這樣做,我實際上也會想到同樣的事情。然而,我迄今爲止所做的所有事情都是非常小規模的,實際上只需要一張桌子。聽起來很瘋狂,但它發生了:) –