数据库设计问题

时间:2011-07-31 14:46:26

标签: database-design

我在数据库database structure

中的某处有以下结构

在所有级别上,存在零对多关系(即作业可能有多个文档,可能有多个单位可能有多个翻译)。

没有作业(现在还没有 - 因此是虚线)它运作得很好,我对数据库设计感觉很好。

每个翻译必须由某人(某些外部承包商)处理。将为每个工作分配多个承包商,并且分配表应该为这些承包商分配建模。基本上,作业是承包商中作业翻译的分区。

为什么我需要在数据库中明确存储分配,而不是,例如直接将承包商分配给每个翻译?因为我需要存储关于每个作业的一些统计数据。

域名给出的限制很少:

  • 单个作业不会跨越多个作业,如果说明中不清楚(也就是说,中的作业外键也是如此作业表)
  • 属于指定作业的所有翻译具有相同的语言(也就是说,语言 分配)中的外键>

我到底遇到了什么问题?

  • 如何强制执行这些域约束?
  • 我不知道分配实体中包含作业语言值是否合适。两者都由作业唯一确定,因此它们可能存在。这可能与第一个问题密切相关。

1)如果我没有在作业中加入作业语言,那么在以下情况下会让我的生活变得更加困难,我想列出给定作业的所有作业,并给出语言(我经常这样做)。

2)如果我在作业中加入作业语言,它会在架构中创建一个循环(作业 - &gt; 作业 - &gt; 翻译 - &gt; 单元 - &gt; 文档 - &gt; < strong>作业)以及附加约束的必要性:对于每个作业,其语言必须与语言相同所有翻译作业

相同

你会如何解决这个问题?

非常感谢。

1 个答案:

答案 0 :(得分:0)

enter image description here

我想,大部分内容应该是显而易见的,请注意每个单位可以给几个承包商进行翻译 - 如果一个人失败,或者并行。对于每个TranslationAssignmentNo{1,2,3..}可以是UnitTranslation - 在大多数情况下,它会是1

修改

也许最好将工作转移到UnitTranslations的集合,以便将来可以打开新工作,如果需要将同一文档翻译成新语言。 enter image description here