Мой вопрос касается наилучшей практики проектирования таблиц в базе данных для конкретного сценария.
Скажем, у нас есть компания, которая продает оргтехнику, скажем, Принтеры.Эта компания также предлагает договоры на обслуживание клиентам, которые приобрели 1 или более своих принтеров.
С учетом приведенной выше информации мы можем вывести три таблицы для нашей базы данных:
- Клиент
- Принтер
- ServiceContract
Таким образом, для данного контракта на обслуживание мы указываем, для какого Клиента создан контракт, и назначаем 1 или более принтеров, которые составляют контрактное соглашение.
Что касается принтеров, являющихся частью соглашения об обслуживании, есть два способа приблизиться к дизайну базы данных.
Первый - создать ServiceContractIDстолбца в таблице «Принтеры» и создайте базовое отношение первичного / внешнего ключа между ним и таблицей ServiceContracts.Единственная проблема, с которой я сталкиваюсь при подходе, заключается в том, что принтеры не обязательно должны быть частью контракта на обслуживание, и поэтому в базе данных могут быть сотни или даже тысячи записей о принтерах, многие из которых не являются частью контракта, поэтомупри этом этот столбец внешнего ключа не используется для многих записей.
Второй вариант - создать таблицу ссылок, которая будет содержать 2 внешних ключа, ссылающихся на обе таблицы ServiceContracts (это первичный ключ) и таблица принтеров (это первичный ключ).Объединение обоих столбцов в этой новой таблице для создания уникального составного первичного ключа.
ОК, вот мое затруднение.Я не вижу ни одного варианта, как обычно действительно плохой идеи, но я застрял в знании того, какое из этих двух проектных решений было бы наилучшей практикой.
Все комментарии приветствуются.