2013-01-12 31 views
0

我在爲我正在構建的新應用確定模型名稱時遇到問題。這些都是重要的決定,所以我想確保做到正確。這將成爲保存醫療記錄的數據庫,因此可以記錄接受醫療服務的人員,其家屬,醫生,護士/行政人員,事故目擊者等。人與用戶vs.客戶 - 正確命名模型

而不是具有特定的表格對於每種類型的人,我正在考慮製作「人物」和「用戶」模型。 '用戶'模型將包含爲衛生機構工作的所有個人,'人員'表將包含所有其他人 - 例如患者和目擊者發生事故。

我還有一個問題,因爲如果一個用戶記錄一個事故,一個'用戶'可能是證人,另一個可能是受害者。它基本上使我的應用程序看起來不靈活,因爲我將「人員」(患者等)和「用戶」(員工等)分成系統中的兩個不變位置。

那麼,爲什麼我不能爲每個人製作一張名爲「人物」的表?然後,一個人可能是用戶,員工,醫生,病人,受害者 - 或者他們的任何組合。

我們有沒有被教過總是命名爲我們工作並登錄系統'用戶'的人?這很重要嗎?

對於每個人都有一個名爲'Person'的表是否有負面影響?它似乎讓事情變得更容易一些。任何人都可以成爲用戶(通過啓用有效登錄/狀態登錄)或非用戶。我沒有看到這個消極的一面。

回答

4

你和我一直都是人,但在某些情況下我們扮演着特定的角色 - 那麼如何設置一個名爲「Person」的模型來代表所有人,並由需要這些角色的特定類鏈接。例如:

class Person < ActiveRecord::Base 
    ... 
end 

class HospitalEmployee 
    belongs_to :user, class_name: 'Person' # foreign key is user_id 
end 

class MedicalRecord < ActiveRecord::Base 
    belongs_to :patient, class_name: 'Person' # foreign key is patient_id 
    ... 
end 

class Accident < ActiveRecord::Base 
    belongs_to :victim, class_name: 'Person' # foreign key is victim_id 
    belongs_to :witness, class_name: 'Person' # foreign key is witness id 
end 

通過這種方式,使了什麼一個人總是恆定的數據,但是,構成了他們發揮角色的數據存儲在其他車型。

你會發現這種設置經常在野外 - 例如,在我工作的一所大學裏,與個人打交道的所有記錄都指向了一個主人「PEOPLE」文件 - 學生後來成爲員工兩個實例中的PEOPLE文件中都有相同的記錄。

0

我往往把具體和通用模型 - 一個用戶有一個人,一個員工都有一個人。 Person模型僅包含名稱,ID,電子郵件等基礎知識。特定於特定角色的所有內容都位於特定於角色的模型(例如用戶)中,但由於您始終可以從任何相關模型中返回人員,因此您可以查看特定人員的所有角色。