2016-01-22 61 views
-2

我正在构建圣诞树种植操作的数据库。我已经放在一起,我相信是一个可行的模式。我希望得到一些人的反馈,我没有人。你是我唯一的希望。请求关于数据库设计的反馈

因此,有3个成长的地块,我们将他们称为果园。每个果园都有行&列,每行/列交叉点可以有零树或一棵树,种植在其中。行/列是数字和字母,所以第3行,第f列等。每个行/列交叉点都有一个状态(空的,正在使用中)。一棵树可以是不同的物种(由人工创建的GID {遗传ID}表示),修饰的(具有嫁接的不同物种)或移动到不同的位置。因此,一个工厂可以有一个或多个位置,并且一个位置可以通过历史包含一棵或多棵树,但一次只能包含一棵。图我放在一起

这里是:

enter image description here

+0

你真的需要TreeLocation? TreeId可以同时拥有多个位置吗? –

+0

一棵树一次只能在一个点上,但它可以移动到不同的位置。所以我在考虑历史的目的,我会使用treelocation表。你认为这是没有必要的吗? – BattlFrog

回答

1

所以我想对历史的目的,我会用 treelocation表。你认为这是没有必要的吗?

不,但在这种情况下,您应该获得与树位置表中树的位置有关的信息。例如“MovedYear”。如果一棵树移动多次,你不想保留每个移动的年份,而不是每棵树只有一个MovedYear?

它的优良有一个历史表你的方式做,但现在,如果TreeId 1已经在3个不同位置,你怎么可以查询数据库,看看它在现在哪个位置?所有你会看到的是:

TreeId LocationId 
1  1 
1  2 
1  3 

你将不知道这些举动发生的顺序。 (除非你有一些业务规则,说树只能移动从1到2和从2到3,从不追随任何其他顺序)。

通常的办法来解决,这是有一个起始日期日期和结束日期在历史表中。

+0

听起来不错,我可能会保留表格,移动'MovedYear'字段并添加开始/结束日期字段。其余的看起来如何? – BattlFrog

+0

我没有看到任何其他明显的问题。 :) –

0

它接缝

的植物可以有一个或多个地点

没有,植物有一个位置,但它可以移动。
为了获得这一点,我们需要树表内

  • 有无位置外键(FK),显示当前树中的位置。
  • 这FK需要强制性的(暴露有一个
  • ,防止发生,我们需要对这个FK列唯一键约束同一位置的多个树。

植物可以移动,所以跟踪一个工厂位置历史

  • 我们需要一个工厂位置历史记录表

每一行/列交叉都有一个状态(空的,正在使用)

所以十字路口状态可以有预定义的限定值。

  • 我们是否需要LocationStatus表?
    我不这么认为。状态可以是locatin表内的静态字段的检查约束(1 =空,2 =在使用中,3 = ETC)

enter image description here