Инвентаризация архитектуры в базе данных - PullRequest
2 голосов
/ 19 февраля 2010

Это не вопрос, связанный с конкретным языком, а скорее о правильной методологии архитектурной обработки инвентаря.

Рассмотрим следующую структуру для хранения программного обеспечения:

platforms (platformID*, platformName)
titles (titleID*, titleName)

ИНиже приведена таблица столяр для уникальных продуктов

products (platformID*, titleID*, releaseDate, notes)

. Ниже приведена таблица, в которой я хотел бы отслеживать свой инвентарь

inventory (platformID*, titleID*, quantityAvailable)

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

software(softwareID*, softwareTitle)
inventory(inventoryID*, softwareID*)

Я хотел бы знать, какой подход предпочтительнее?Должен ли я создать инвентарный идентификатор и, таким образом, строку для каждой уникальной копии программного обеспечения:

inventory(inventoryID*, platformID*(fk), titleID*(fk))

или использовать вместо нее таблицу, в которой хранится количество, например:

inventory(platformID*(fk), titleID*(fk), quantityAvailable)

Ответы [ 3 ]

2 голосов
/ 19 февраля 2010

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

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

1 голос
/ 19 февраля 2010

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

Я бы также рекомендовал добавить еще один столбец: versionNo --- номер версии программного продукта. Иногда у вас могут быть разные версии одного и того же продукта. Если у вас есть это, не стоит добавлять информацию в заголовок (например, вы хотите искать все продукты Microsoft Office независимо от версии ...).

1 голос
/ 19 февраля 2010

Должен ли я создать инвентарь и Таким образом, строка для каждого уникального программного обеспечения копия

Нет причин делать это, если вы не хотите хранить некоторую информацию о каждой уникальной копии программного обеспечения, например, дату, когда каждая копия была куплена. Это редко бывает практичным в инвентаре программного обеспечения.

Или используйте таблицу, в которой хранится количество вместо этого?

Вы также можете подумать о добавлении столбца quantityAvailable в таблицу продуктов, если только вы не думаете, что в конечном итоге вы захотите иметь много запасов для каждого наименования, чтобы иметь возможность распределить количество запаса, которое находится под специальным предложение, которое скоро истекает и т. д.

...