建模其他字段

时间:2015-01-01 14:05:49

标签: database data-warehouse

我正在尝试从法律促进组织的十个本地数据源中提取有关人员的信息。我创建了一个名为Person的表:

CREATE TABLE Person 
 (ID int identity, 
  DateOfBirth datetime, 
  Occupation varchar(100), 
  LastVisit datetime, 
  datecreated datetime, 
  datemodified datetime, 
  primary key (id));

十个数据库中的每一个都包含:DateOfBirth,Occupation,LastVisit,datecreated和datemodified,因此创建此表很简单。

某些数据库包含其他信息。例如,数据库1包含地址,数据库2包含车辆,数据库3包含属性,数据库4包含智能等。

我正在考虑建模这些要求的最佳方法。我相信有两种选择:

  1. 为附加信息创建表格,例如车辆表,地址表,属性表等。在Person和每个附加表之间存在从零到多的关系。
  2. 使用更动态的方法,即CustomTable1,CustomTable2,CustomTable3等.CustomTable1将具有CustomField1,CustomField2等。这种方法意味着在附加表之上引入一层抽象。是否有我不知道的设计模式?

1 个答案:

答案 0 :(得分:1)

(窃窃私语)你是Java程序员吗?

如果您构建一个表来存储有关车辆的数据,并将其命名为“CustomTable17”,那么编写查询的每个人都会诅咒您直到您临终的日子。你甚至会诅咒自己。

不要那样做。在您的情况下,您知道在开始之前需要建模的每个属性。你不需要“更有活力”。你不需要“抽象层”。

将车辆数据存储在名为“车辆”的表格中,除非有令人信服的理由使用其他名称。 “更具动态性的方法”和“抽象层”并不是使用不同名称的令人信服的理由。

“此表不适用于任何车辆。仅适用于被扣押的车辆。”现在 是使用不同名称的一个令人信服的理由。但我们谈的是像“impounded_vehicles”这样的名字,而不是像“CustomTable135”这样的名字。

当我不得不整合来自多个来源的数据时,我有时发现存储每行的来源很有用。给出一些想法。