Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Объединения на основе неравенства

Объединения на основе неравенстваИногда объединять таблицы нужно на условиях, отличных от равенства. Применение объединений равенства основано на отношениях первичного и внешнего ключа, однако в отношении объединений неравенства все не так. Такие объединения обычно наполняют результирующий набор данных информацией, которая на практике не имеет смысла. К примеру, если заменить знак равенства в условии объединения предыдущего примера знаком неравенства, в результирующий набор данных войдут все комбинации заказчиков и номеров телефонов, за исключением тех, которые реально существуют (рис. 9.2). Другими словами, результирующий набор данных будет подобен декартову произведению двух множеств (т. е. перекрестному объединению, описываемому далее).

В то же время в некоторых ситуациях объединения, создаваемые на основе условий неравенства, могут оказаться полезными. Для примера предположим, что в компании ACME существуют следующие правила бизнес-логики. Для заказов с общей суммой меньше 10 тыс. долларов не существует скидок; 2-процентная скидка устанавливается для заказов в сумме от 10000 до 14999 долларов; на заказы в сумме от 15000 до 19999 долларов устанавливается скидка 3%, а на заказы с большей суммой дается скидка в 4%. Одним из способов реализации подобных правил является создание отдельной таблицы, хранящей минимальные и максимальные суммы заказов, а также соответствующие им скидки (рис. 9.3). Рекомендуется всегда создавать для хранения потенциально изменяющихся значений отдельные таблицы (к примеру, если максимальная скидка в компании ACME изменится с 4-х до 3,5 процентов). В этом случае при изменении значения будет достаточно обновить значение в этой таблице, что несравненно легче, чем изменять текст программы и заново компилировать приложение. В предыдущем примере было представлено объединение неравенства между представлением V_CUSTOMER_TOTALS (отображающим суммы заказов) и таблицей скидок DISCOUNT. В запросе вычисляются суммы скидок, получаемые путем умножения соответствующего процента на общую сумму заказа в соответствии с изложенными ранее правилами бизнес-логики.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *