|
Программирование >> Исключение дубликатов строк
Customers
Рис. 5.13. Обычная таблица Клиенты Строка нулевой длины - две последовательные одиночные кавычки без пробела между ними ( ) - может при определенных обстоятельствах оказаться значащей. Например, в таблице Employee значение строки с нулевой длиной в столбце с именем Middlelnitial указывает, что у конкретного служащего отсутствует второе имя. Значение Null исключительно полезно, когда используется для указанной цели, и таблица Customers на рис. 5.13 представляет собой явный пример. В столбце CustCounty каждое Null представляет собой пропущенное или неизвестное имя округа для строки, в которой оно появилось. Для корректного использования Nu необходимо понять в первую очередь, почему оно появляется. Пропущенные значения обычно являются результатом ошибки человека. Рассмотрим, например, строку для Michael Davolio. Если при вводе данных для г-на Davolio вы не спросили у него название страны проживания, то эти данные будут рассматриваться как пропущенные и представляются в строке как Null. Когда ошибка будет обнаружена, ее можно исправить, уточнив у г-на Davolio название его страны. Неизвестные значения появляются в таблице по множеству причин. Одна из них может быть в том, что необходимое для столбца конкретное значение все еще не определено. Допустим, имеется таблица Categories (Категории) в базе данных School Scheduling (Расписание занятий). В этой таблице отсутствует категория для нового курса лекций, который предполагается ввести начиная с осенней сессии. Другая причина, по которой в таблице могут содержаться неизвестные значения, состоит в том, что они действительно неизвестны. Воспользуемся еще раз таблицей Customers (Клиенты) на рис. 5.13 и рассмотрим строку для Kenneth Peacock. Предположим, что вводятся данные для г-на Peacock и вы запрашиваете у него название округа, в котором он живет. Если он не знает его названия, значение столбца для округа в его строке будет действительно неизвестным и представляется в этой строке как Null. Можно устранить проблему, как только название округа будет установлено. Значение столбца также может быть Null, если ни одно из его значений неприменимо к конкретной строке. Предположим, вы работаете с таблицей Employee (Сотрудники), которая содержит столбцы Salary (Зарплата) и HourlyRate (Почасовая ставка). Значение одного из этих столбцов всегда будет Null, поскольку невозможна одновременная оплата сотрудника как по фиксированной, так и по почасовой ставке. Между понятиями не применяется и неприменимо существует очень незначительная разница. В предьщущем примере значение одного из столбцов действительно не применяется. Но предположим, что вы работаете с таблицей Patient (Пациенты), в которой имеется столбец HairColor (Цвет волос), и вы занимаетесь текущей корректировкой строки для пациента-мужчины. Если этот пациент лысый, то значение для указанного столбца определенно неприменимо к нему. Хотя и можно использовать значение Null для представления неприменимого значения, мы рекомендуем использовать истинное значение, например N/A (от Not Applicable - Неприменимо). При этом информация окажется намного понятнее спустя некоторое время. Разрешать ли использование значения Null в таблице - зависит от способа использования данных. Рассмотрим теперь негативные последствия использования значений Nul. Проблемы, свпзонные с использованием Null Основной недостаток использования Null состоит в его неблагоприятном воздействии на математические операции. Любая операция с привлечением Null дает в результате Null. Логически это разумно: если число неизвестно, то результат операции неизбежно неизвестен. Обратите внимание, как Null изменяет результат операции в следующем примере: (25 * (Null (25 * (25 * 3) + 4 = 79 * 3) + 4 = Null Null) + 4 = Null 3) + Null = Null Такой же результат получается, когда в операции используются столбцы, содержащие значения Null. Предположим, что выполняется следующий оператор SELECT и возвращает набор результатов, представленный на рис. 5.14: SELECT ProductID, ProductDescription, Price, QuantityOnHand, Price * QuantityOnHand AS Total Value FROM Products Category, Операция, представленная столбцом TotalValue, завершается успешно в том случае, когда столбцы Price и QuantityOnHand являются допустимыми цифровыми значениями. Если Price либо QuantityOnHand содержат Null, то TotalValue будет содержать Null. Как только значения Null в Price и QuantityOnHand будут заменены действительными цифровыми значениями, TotalValue будет содержать соответствующее Products
Рис. 5.14. Результат присутствия Null в математическом выражении значение. Этой проблемы можно полностью избежать, обеспечив отсутствие значений Null в столбцах, используемых в математическом выражении. В главе 12 будет рассмотрено влияние значений Null на операторы SELECT, суммируюидие информацию. Примеры опвротороА Теперь рассмотрим некоторые примеры использования таблиц для каждой из учебных баз данных. Внимание! В последующих примерах этапы преобразования и уточнения объединены, чтобы вы научились делать это самостоятельно. Хотя все еще выполняются все три этапа, вам предоставляется возможность поработать с процессом объединения в примерах операторов. Бозо донных зокозоб но зокупку What is the inventory value of each product? { Какова стоимость запасов каоюдого товара? ) Преобразование/ Select tfte product name, retail price times * quantity Уточнение: on hand as InventoryValue from the products table (Выбрать наименование продукта, розничную цену * количество в наличии как InventoryValue из Товары ) SELECT ProductName, Retail Price * QuantityOnHand AS InventoryValue FROM Products
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |