我正在建立一个用于圣诞树种植操作的数据库。我把我认为的一个可行的架构放在一起。我希望得到一些人的反馈,我没有人。你是我唯一的希望。
所以,有3个不断增长的地块,我们称之为果园。每个果园都有行和列,每个行/列交叉点可以有零个或一个树,种植在其中。行/列是数字和字母,因此第3行,第f列等。每个行/列交集都有一个状态(空,正在使用中)。树可以是不同的物种(由手动创建的GID {遗传ID}表示),修饰(具有不同的物种嫁接),或移动到不同的位置。因此,植物可以有一个或多个位置,一个位置可以通过历史记录包含一棵或多棵树,但一次只能包含一棵树。
这是我放在一起的图表:
答案 0 :(得分:1)
所以我在考虑历史目的,我会用 地理位置表。你觉得没必要吗?
不,但在这种情况下,您应该在树位置表中获得有关树的位置的信息。例如" MovedYear"。如果一棵树多次移动,你不想保留每次移动的年份,而不是每棵树只移动一次MovedYear吗?
按照您的方式创建历史记录表没有问题,但是现在,如果TreeId 1位于3个不同的位置,您如何查询数据库以查看它现在在哪个位置?你所看到的只有:
TreeId LocationId
1 1
1 2
1 3
你不知道动作发生的顺序。 (除非你有一些业务规则,说树只能从1移动到2,从2移动到3,并且永远不会遵循任何其他顺序)。
解决此问题的常用方法是在历史记录表中使用StartDate和EndDate。
答案 1 :(得分:0)