Каким будет T-sql Query по сценарию? - PullRequest
0 голосов
/ 25 февраля 2011

У меня есть сценарий, в котором есть квартира, и в каждой квартире есть квартиры, известные как «Недвижимость» в моей таблице. В каждой квартире может быть несколько приборов, таких как кондиционер, телевизор, холодильник и т. Д. Мы ведем мастер-таблицу приборов.

Допустим, пользователь приобрел некоторые предметы для этого дома, такие как лампы накаливания для телевизора, переменного тока и лампы КЛЛ. Таким образом, он в первый раз будет выполнять операцию вставки, в которую вставляются такие детали, как ApplianceId, DateOfPurchase, Serial # Product, PropertyId (Id of the flat). До этого у нас все в порядке, без проблем.

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

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

  2. Проверка должна быть выполнена для всех свойств. То есть во всей таблице это должно быть применимо. Это не должно быть собственностью. То есть, если у меня есть AC с серийным номером 1234, то невозможно, чтобы гуру SO Джон Скит мог также иметь AC с серийным номером 1234. У него может быть Refridgrator с тем же серийным номером. И обратите внимание, мы используем серийный номер в простой числовой форме, такой как 123456789901 . Не допускаются символы.

Пожалуйста, помогите мне и сообщите, если что-то не ясно.

Ответы [ 4 ]

2 голосов
/ 25 февраля 2011

уникальное ограничение для таблицы свойств (Product, SerialNo)?Предполагается, что продукт содержит productType

Это должно сработать.

ГДж

1 голос
/ 25 февраля 2011

Я собираюсь предположить, что ApplianceId относится к типу устройства, т.е. каждый тип устройства имеет уникальный идентификатор.В этом случае комбинация ApplianceId и Serial # образует первичный ключ для таблицы вашего устройства.Параметр, который предотвращает вставки или обновления, которые вызывают конфликт.

1 голос
/ 25 февраля 2011

Вам просто нужно уникальное ограничение или индекс для appliance type, serial number по звукам вещей.

create unique index uix on appliances(type, serial_number)
0 голосов
/ 25 февраля 2011

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

...