2017-08-08 37 views
0

我正在設計一個數據庫,我想知道;mysql數據庫邏輯適合查詢嗎?

我可以用疑問回答這個問題嗎?從培訓中獲得多少技能員工?

這是一個很好的結構嗎?

  • 多少錢每部花費
  • 有多大的本事每所賺取
  • 有多大的本事每個部門
id session_name Skill   impact sugg dept function training_value training no 
1 PHP    Software  3  Sales  2   100usd   1 
2 PHP    Software  3  Finance 2   100usd 1 
3 PHP    communication 2  Sales  2   100usd 1 
4 PHP    communication 2  Finance 2   100usd 1 
5 ASP    Software  4  Sales  2   200usd   2 
6 ASP    Software  4  Finance 2   200usd 2 
7 ASP    database  1  Sales  2   200usd 2 
8 ASP    database  1  Finance 2   200usd 2 


attended training table 
id student_id training_no 
1 1   1 
1 1   2 


student table 
id name department 
1  John 1 
2  Mary 2 

department table 
id name 
1 sales 
2 finance 

獲得了我需要找到終結技能每個學生

john 
software  7 
communication 2 
database  1 

total spent 
john 300 usd 

total spent by department 
sales 300 usd 

回答

3

您的模式對我來說確實很好。

但是,您應該考慮實體和關係。

您的實體似乎是培訓,人員和部門。

你有許多關係:培訓。那很好。 您與部門之間有很多關係:人員。這也很好。

它看起來像你想要培訓:部門的某種關係。我在這裏猜測,但你的訓練表中有一個sugg dept列。這應該與你的部門表有直接關係嗎?

你實際上是否需要一個名爲「出勤」的額外實體,而不僅僅是一個多對多的關係人員:培訓。你想記錄一個人何時進行培訓?你想記錄多少特定的出席費用?如果有測驗,他們會收到什麼標記?

在這種情況下,您需要每個人有零或多個出勤的關係,每個出勤只有一次培訓,並且每次培訓的出勤率爲零或更多。

我的觀點:通過您的實體和關係進行思考,結果將成爲您桌子的一個很好的設計。

如果我可以換一種說法:你試圖在你的數據庫中捕獲真實世界的哪一部分?在真實世界中,您希望數據庫能夠保持什麼價值?在你的申請...

  • 學生是人。他們是,嗯,固有價值和持久的實體。
  • 培訓代表了創建和呈現他們的勞動力和成本。
  • 出勤表示學生的努力。
  • 部門可能支付出席的費用。它們當然代表了應用程序中的權力中心。

在現實世界的這個角落裏還存在着什麼其他價值項目?教師?經理人?場地(教室)?設備?顧客?

我的觀點是,找出你的實體 - 價值的項目 - 以及它們之間的關係。然後編寫你的表格定義。

+0

重點不夠突出:首先在概念和邏輯層面建立模型,然後纔開始修改表格! –

+0

謝謝。邏輯是當學生登錄系統時。學生只能看到向他的部門建議的培訓和他的功能。這就是爲什麼同樣的訓練在我的桌上列出4次。當我接受訓練時,我獲得了多項技能。就像PHP給了我編碼技能+4,但也給了我數據庫技能+2。最後,我希望看到每個人,每種技能,每個員工的付款。 – Teo