0

Для нашей собственной системы управления запасами мы определяем наши детали машин и собранные изделия в таблице tpart. Чтобы определить спецификацию, мы имеем таблицу tbom.Билль материалов и версий

enter image description here

Каждая часть имеет ревизию (его изменении, а часть по-прежнему взаимозаменяемыми с предыдущей версии, другими словами: две части - тот же идентификатор - с другой ревизии являются одним-на-один заменяемый).

Нам нужна история изменений. Каков наилучший способ достичь этого?

  • Правильный ли составной первичный ключ в tbom?
  • Каждый раз, когда мы создаем новую ревизию, нам нужно скопировать все записи из предыдущей версии (в tbom) в записи для новой редакции?
  • Когда дочерняя часть изменена, все родительские части должны обновить свою спецификацию и/или ревизию?

Или лучше использовать отдельную таблицу trevision?

Любая помощь очень ценится!

ответ

0

Я могу предложить следующую конструкцию для вашего случая.

tbom table

revision_history table

Вы можете иметь следующие преимущества путем добавления новой истории пересмотра таблицы.

  • Вам не нужно хранить (или клонировать) parentpart_id и subpart_id для каждой ревизии. Это позволит вам уменьшить размер таблицы на , исключая ненужную информацию.
  • Вы можете хранить записи изменений неограниченного количества для каждого элемента bom.
  • Вы можете создать более эффективную структуру, объединив внешние ключи.
  • Вы можете добавить дополнительные поля истории истории в новую таблицу, такую ​​как revision_purpose, registered_issues и т. Д. В качестве альтернативы вы можете создать следующую новую таблицу для хранения сведений об изменениях.

revision_history_detail table

Надеется, что это помогает

+0

Спасибо за ваш ответ. Два замечания: 1) «subpart_id» также является внешним ключом (из tpart). 2) Я не вижу, как «revision_history» использует «tbom_id». Каждый идентификатор в 'tbom' определяет количество, необходимое части в его родительской части. Для каждой подчасти, принадлежащей родительской части, есть запись в 'revision_history'? Как связаны «tbom.date» и «revision_history.revision_date»? – user729103

+0

(X) Необходимо сохранить tbom_id в revision_history, прочитав его из таблицы tbom. (X), если значение даты в tbom - дата пересмотра, конечно, это необязательно. Если это так, его следует удалить из tbom. – aog

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