2012-06-03 202 views
1

我想爲培訓師和客戶數據庫設計最佳設計。實體關係 - DB設計

我最初的想法是這樣的:

  1. 實體person與客戶和培訓師的共同屬性(姓名,出生日期等)。一個客戶只能有一個培訓師。一位教練可以有很多客戶。

  2. 不知是否爲控制客戶和培訓人員的權限,或者只是在person

我曾經考慮過在和遞歸關係處於一個統一體一切再就是添加屬性Role創建實體user

有什麼建議嗎?

謝謝。

+0

謝謝大家對您的意見,這是我想出了: 用戶(用戶ID,姓名,杜伯,用戶名,密碼,將保留地址在這裏太...) UserRole的(用戶ID,角色ID) 角色(角色ID,角色) RolePermission(角色ID,PermissionId) 權限(PermissionId,許可) 客戶端(客戶端Id,用戶ID,NextOfKin,...) 培訓師(TrainerId,用戶ID,等級,...) ClientTrainer(客戶端Id, TrainerId) 在我繼續之前,我想聽聽您的意見。謝謝。 – Paragon

回答

0

從實體角度來看,培訓師和客戶可能有不同的數據,您可以關注每個數據。您仍然可以擁有全球用戶表,但培訓師和客戶端應該與用戶實體具有1:1的關係。然後你可以在客戶和培訓師之間建立一個連接表。我會建議在這裏建立一個多對多的關係,以防萬一有人真的想要塑造並想要2名培訓師。

+0

請問這是映射一個全局表,讓我們說'用戶'和第二個表的客戶和培訓師的屬性和他們的作用?謝謝。 – Paragon

+0

這取決於你想成爲什麼樣。如果您要跟蹤的數據遠遠超出核心用戶數據,那麼我會推薦兩個不同的表。即使有人碰巧既是培訓師也是客戶,但您仍然沒有冗餘,因爲培訓師實體應該有培訓師特定的數據,而客戶端是客戶端特定的數據,並且您的用戶表中會顯示任何全局數據。 – Nick

+0

謝謝尼克。如果有必要,我去了兩個不同的表格,以允許將來添加更多特定的數據。我將使用Client和Trainer之間的連接表來保存客戶開始接受新培訓師培訓的日期。 – Paragon

0

培訓師可以培訓師嗎?例如,專門從事鐵人三項運動的訓練師可能是一名游泳運動員,並且有游泳教練。

我喜歡Role設計我自己。

+0

是的,訓練者可以有一個訓練者,可以是他自己或另一個,允許訓練者爲他自己或其他訓練者創建訓練計劃。感謝您的貢獻。 – Paragon

+0

然後你肯定需要一個層次結構的人物角色設計。 – duffymo

+0

謝謝duffymo – Paragon