Я новичок в DB Design, и я недавно унаследовал ответственность за добавление новых атрибутов в существующий проект.Проблемы с дизайном таблицы базы данных
Ниже приведен пример текущей таблицы в вопросе:
Подача Таблица:
ID (int)
Subject (text)
Processed (bit)
SubmissionDate (datetime)
Submitted (bit)
...
Новые требования:
Поданная могут быть помечены как действительный или недействительный
Причина должна быть предоставлена, когда представление помечен как недействительным. (Таким образом, представление может иметь InvalidReason)
- Материалы могут быть связаны друг с другом таким образом, что: Multiple действительные Материалы могут быть установлены в качестве «замены» в течение недействительных Представление.
Так что я в настоящее время принято решение легко и просто добавили новые атрибуты непосредственно к представлению таблицы, так что это выглядит следующим образом:
NEW Представление таблицы:
ID (int)
Subject (text)
Processed (bit)
SubmissionDate (datetime)
Submitted (bit)
...
IsValid (bit)
InvalidReason (text)
ReplacedSubmissionID (int)
Все работает отлично, но это выглядит немного странно:
- Имея InvalidReason в качестве столбца, который будет NULL для большинства представлений.
- Имея ЗамененныйСообщениеID в качестве столбца, который будет NULL для большинства представлений.
- Если я правильно понимаю норма, InvalidReason может быть транзитно зависимым от IsValid бит.
Похоже, что некоторые из этих атрибутов должны быть извлечены в отдельную таблицу, но я не вижу, как создать этот проект с этими требованиями.
Является ли это одним столом дизайн в порядке? У кого-то есть лучшие альтернативные идеи?
Спасибо за объяснение и ответ! просто то, что я искал! – Michael