2016-01-22 4 views
-2

Я создаю базу данных для операции по выращиванию елки. Я собрал, что я считаю, работоспособной схемой. Я надеюсь получить от кого-то отзыв, и у меня нет никого. Ты моя единственная надежда.Задать вопрос о проекте базы данных

Итак, есть 3 растущих участка, мы будем называть их садами. Каждый Orchard имеет строки &, и каждое пересечение строк/столбцов может иметь нулевые или одни деревья, установленные в нем. Строки/столбцы - это числа и буквы, поэтому строка 3, столбец f и т. Д. Каждое пересечение строк/столбцов имеет статус (пустой, при использовании). Деревом могут быть разные виды (обозначенные вручную созданным GID {Genetic ID}), модифицированные (имеющие разные виды, привитые) или перемещенные в другое место. Таким образом, растение может иметь одно или несколько мест, и местоположение может содержать по истории одно или несколько деревьев, но только по одному.

Вот схема я соединял:

enter image description here

+0

вам действительно нужно TreeLocation ли? Может ли TreeId иметь более одного места за раз? –

+0

Дерево может находиться только в одном месте за раз, но оно может перемещаться в другое место. Поэтому я думал об исторических целях, я бы использовал таблицу treelocation. Считаете ли вы, что это не нужно? – BattlFrog

ответ

1

Так я думал, для исторических целей, я хотел бы использовать таблицу treelocation. Считаете ли вы, что это не нужно?

Нет, но в этом случае у вас должна быть информация, относящаяся к расположению дерева в таблице расположения деревьев. Например, «MovedYear». Если дерево перемещается несколько раз, не хотите ли вы сохранить Year of each Move вместо одного MovedYear для каждого дерева?

Хорошо, что таблица истории так же работает, но прямо сейчас, если TreeId 1 находится в трех разных местах, как вы можете запросить свою базу данных, чтобы узнать, в каком месте она находится сейчас? Все, что вы увидите, это:

TreeId LocationId 
1  1 
1  2 
1  3 

Вы не будете знать, в каком порядке произошли ходы. (Если у вас нет бизнес-правила, в котором деревья могут перемещаться только от 1 до 2 и от 2 до 3 и никогда не следовать никакому другому заказу).

Обычный способ решения этого вопроса - иметь StartDate и EndDate в таблице истории.

+0

Звучит неплохо, я, скорее всего, сохраню таблицу, переместим поле «MovedYear» и добавлю поля даты начала и окончания. У вас остальное выглядит? – BattlFrog

+0

Я не вижу никаких других очевидных проблем. :) –

0

швы

Растение может иметь одну или несколько мест

Нет, растение имеет в месте, но он может двигаться.
Для получения этого нам нужно

  • Have расположения внешнего ключа (FK) внутри таблицы дерева, показывая текущее местоположение дерева.
  • Это FK должно быть обязательным (обнажая есть )
  • Чтобы предотвратить несколько деревьев, имеющих то же место, мы должны иметь уникальное ключевое ограничение на этой колонке FK.

Растение может двигаться, так, чтобы проследить историю установки местоположения

  • Нам понадобится таблица растений местоположения История

Каждая строка/столбец пересечения имеет статус (пустая, используется)

Таким образом, состояние пересечений может иметь заданные ограниченные значения.

  • Нужна ли нам таблица LocationStatus?
    Я так не думаю. статус может быть статическим полем внутри locatin таблицы с обратной скованностью (1 = пустых, 2 = в использовании, 3 = ETC)

enter image description here

Смежные вопросы