Я боролся с тем, как мне указать, что определенная запись в базе данных является «резервной» или записью по умолчанию.Я также боролся с тем, как свести мою проблему к простому формулированию проблемы.Я собираюсь привести пример.
Предположим, вы создаете очень простое приложение для доставки.Вы будете принимать заказы и должны будете решить, с какого склада их отгружать.
Допустим, у вас есть несколько городов, у которых есть свои собственные специализированные склады *;если заказ поступит из одного из этих городов, вы отправите его со склада этого города.Если заказ поступает из любого другого города, вы хотите отправить его с определенного другого склада.Этот другой склад мы назовем резервным складом.
Вы можете выбрать схему, подобную этой:
Warehouses
WarehouseId
Name
WarehouseCities
WarehouseId
CityName
В решении должно быть задействовано ноль или один запасной склад.
Вам нужен способ указать, какой склад следует использовать, если для данного города не указано ни одного склада.Если это действительно имеет значение, вы делаете это на SQL Server 2008.
РЕДАКТИРОВАТЬ: Для ясности, все действительные города НЕ присутствуют в таблице WarehouseCities .Можно получить заказ для города, не указанного в WarehouseCities.В таком случае нам нужно иметь возможность выбрать запасной склад.
Если бы было разрешено любое количество хранилищ по умолчанию или если бы я назначал склады по умолчанию, скажем, состояниям, я бы использовал таблицу DefaultWarehouse,Я мог бы использовать такую таблицу здесь, но мне нужно было бы ограничить ее ровно одной строкой, что кажется неправильным.
Как бы вы указали запасной склад?
* Конечно, в этом примере мы исключаем возможность того, что может быть несколько городов с одинаковыми названиями.Страна, для которой вы создаете это приложение, строго соблюдает ограничение уникальности для всех названий городов.