任何这些子类化方法的任何潜在缺点?

时间:2014-01-03 14:44:18

标签: sql database-design semantic-analysis

想象一下,您有几个代表活动的表:

  • ProcessActivities
  • MedicalActivities
  • MaintenanceActivities
  • LogisticalActivities

你现在意识到所有都是活动,那么,你会做什么?

  1. 您创建了一个名为“activities”的主表,并为值添加了一个类型字段:process,medical,maintenance,logistical或
  2. 您创建一个超级活动表,并为每个子类创建一个只有主键的表,知道这两个子类都没有唯一字段
  3. 我可以想到一些参与决策的优点/缺点:

    第一种方法:

    1. 活动中的CRUD操作意味着可以在两个不同的表中工作
    2. 简化E-R图
    3. 失去诚信约束
    4. 第二种方法:

      1. 维持这种关系的两个指数将保存在两个不同的地方
      2. 语义
      3. 这两种方法中是否存在任何潜在的表现或其他后果?

1 个答案:

答案 0 :(得分:1)

我只会使用主活动表,其中包含可以拆分为所有四种活动类型的数据。这还需要一个ActivityTypeId来指示它是哪种类型的Activity,以及在哪个表中查找详细信息。

假设有共同数据:

  • 优点:从更详细的类型中将数据正确抽象为常见类型。
  • 缺点:编码稍微复杂但不太多

假设公共数据最少:

  • 优点:没有,
  • 缺点:使用统一的整体(xActivity)对数据进行不正确的抽象,分布在2个地方而不是1个。

需要多少常见数据?这就是你的经验和判断的来源。你还需要考虑以下因素:是否会有一个查询屏幕,列出所有类型的活动?如果是这样,可以将此查询中的列放在单个表中而不会破坏数据(例如,对于一个列活动类型1有一个字符串类型2具有日期等)?

恐怕不容易回答。