Абстрактный дизайн таблицы вопрос - PullRequest
2 голосов
/ 07 сентября 2011

Я работаю над одной системой документов и получил некоторые логические / архитектурные проблемы.В этой системе будет много типов документов - входящих, исходящих и т. Д. Каждый тип документа имеет свое количество столбцов, которые необходимо заполнить.На бумаге все просто, но в программном обеспечении - нужен совет:)

Например:

incoming document type 1 have 16 cols, 
outgoing document type 1 have 15cols, 
inner document have 9 cols,
etc...

Сначала я подумал, что сделаю одну таблицу под названием «Категории»«где будут храниться (в дереве) типы документов (входящие, исходящие и т. д.) и одна общая таблица« Документы »с максимальным количеством возможных строк (например, 25), где будут храниться все документы и, если не используется некоторая ячейка, то игнорируетсяЭто.

После того, как я подумал, что я могу сделать намного более простую - для каждого типа документа - собственную таблицу, но после некоторого размышления это кажется худшим решением.

Поэтому я хочу самое лучшее решениеза это.

Может быть, вы можете мне помочь?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 07 сентября 2011

Это типичный пример для наследования таблиц.Вы бы сделали что-то вроде этого:

Document
----------
DocumentId (PK)
DocumentType
... any columns common to the different formats

DocumentIncoming
----------
DocumentId (PK, FK to Document)
... columns specific to Incoming

DocumentOutgoing
----------
DocumentId (PK, FK to Document)
... columns specific to Outgoing
1 голос
/ 07 сентября 2011

Используйте центральную таблицу «Документы», которая содержит код категории и только те столбцы, которые применяются к каждой отдельной категории.

Затем для каждой категории используйте таблицу, которая ссылается на соответствующую запись в Документах и«добавляет» дополнительные столбцы, соответствующие этой категории.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...