2

我在决定我正在构建的新应用程序的型号名称时遇到问题。这些都是重要的决定,所以我想确保做对。这将是一个保存医疗记录的数据库,因此可以有关于接受医疗服务的人、他们的家人、医生、护士/行政人员、事故证人等的记录。

我没有为每种类型的人设置一个特定的表格,而是考虑制作“人”和“用户”模型。“用户”模型将包含为医疗机构工作的所有个人,而“人员”表将包含其他所有人——例如患者和事故证人。

我仍然有一个问题,因为如果用户记录事故,一个“用户”可能是证人,另一个可能是受害者。它基本上使我的应用程序看起来不灵活,因为我将“人”(患者等)和“用户”(员工等)分成系统中的两个固定位置。

那么,为什么我不能为每个人制作一张名为“People”的表格呢?然后,一个人可以是用户、员工、医生、患者、受害者——或者他们的任意组合。

我们是否被教导要始终命名为我们工作的人员并登录系统“用户”?这有关系吗?

为每个人设置一个名为“Person”的表格有什么负面影响吗?它似乎使事情变得容易一些。任何人都可以是用户(通过启用有效的登录/状态来登录)或非用户。我不认为这有负面影响。

4

3 回答 3

5

你和我总是人,但我们在某些情况下扮演特定的角色——那么在一个设置中,所有的人都由一个名为“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 文件。

于 2013-01-12T05:44:39.613 回答
0

您可以为所有人制作一张桌子。这可以使用单表继承来完成。我建议您将用户用作父母,将其他人用作孩子(员工,患者)。您需要在用户表中创建类型字段。它将存储用户的类型。

有关更多信息,请参阅:http ://rookieonrails.blogspot.in/2008/01/single-table-inheritance-in-rails.html

于 2013-01-12T05:29:30.450 回答
0

我倾向于创建特定模型和通用模型——用户有一个人,一个员工有一个人。Person 模型仅包含姓名、ID、电子邮件等基本信息。特定角色的所有内容都在角色特定模型(例如用户)中,但是因为您总是可以从任何相关模型返回到 Person,例如,您可以查看给定人员拥有的所有角色。

于 2013-01-12T05:42:10.507 回答