Главная » Просмотр файлов » Мартин Грубер - Понимание SQL

Мартин Грубер - Понимание SQL (991940), страница 29

Файл №991940 Мартин Грубер - Понимание SQL (Мартин Грубер. Понимание SQL) 29 страницаМартин Грубер - Понимание SQL (991940) страница 292015-08-23СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 29)

Остается фактом, что вероятность беспорядка в базе данныхдостаточно мала, если вы предписываете уникальность вместе с ограничением.УНИКАЛЬНОСТЬ КАК ОГРАНИЧЕНИЕ СТОЛБЦАВремя от времени, вы хотите убедиться, что все значения введеные в столбецотличаются друг от друга. Например, первичные ключи достаточно ясно это показывают.Если вы помещаете ограничение столбца UNIQUE в поле при создании таблицы,база данных отклонит любую попытку ввода в это поле для одной из строк, значения,которое уже представлено в другой строке. Это ограничение может применятьсятолько к полям которые были обьявлены как непустые (NOT NULL), так как не имеетсмысла позволить одной строке таблицы иметь значение NULL, а затем исключатьдругие строки с NULL значениями как дубликаты.Имеется дальнейшее усовершенствование нашей команды создания таблицыПродавцов:CREATE TABLE Salespeople( Snum integer NOT NULL UNIQUE,Sname char (10) NOT NULL UNIQUE,city char (10),comm decimal );Когда вы обьявляете поле sname уникальным, убедитесь, что две Mary Smith будут введены различными способами — например, Mary Smith и M.

Smith. В то же время это не так уж необходимо с функциональной точки зрения — потому что поле snumв качестве первичного ключа, все равно обеспечит отличие этих двух строк — чтопроще для людей, использующих данные в таблицах, чем помнить что эти Smith неидентичны.Столбцы (не первичные ключи) чьи значения требуют уникальности, называютсяключами-кандидатами или уникальными ключами.УНИКАЛЬНОСТЬ КАК ОГРАНИЧЕНИЕ ТАБЛИЦЫВы можете также определить группу полей как уникальную с помощью командыограничения таблицы — UNIQUE. Объявление группы полей уникальной, отличаетсяот объявления уникальными индивидуальных полей, так как это комбинация значений,а не просто индивидуальное значение, которое обязано быть уникальным.Уникальность группы — это представление порядка, так что бы пары строк созначениями столбцов "a", "b" и "b", "a" рассматривались отдельно одна от другой.Наша база данных сделана так, чтобы каждый заказчик был назначен одному итолько одному продавцу.

Это означает, что каждая комбинация номера заказчика(cnum) и номера продавца (snum) в таблице Заказчиков должна быть уникальной. Выможете убедиться в этом, создав таблицу Заказчиков таким способом:CREATE TABLE Customers( cnuminteger NOT NULL,cname char (10) NOT NULL,citychar (10),rating integer,snuminteger NOT NULL,UNIQUE (cnum, snum));Обратите внимание что оба поля в ограничении таблицы UNIQUE все еще используют ограничение столбца — NOT NULL. Если бы мы использовали ограничениестолбца UNIQUE для поля cnum, такое ограничение таблицы было бы необязательным.Если значения поля cnum различно для каждой строки, то не может быть двухстрок с идентичной комбинацией значений полей cnum и snum. То же самое получитсяесли мы обьявим поле snum уникальным, хотя это и не будет соответствовать нашемупримеру, так как продавец будет назначен многочисленым заказчикам.

Следовательно, ограничение таблицы — UNIQUE, наиболее полезно когда вы не хотите заставлять индивидуальные поля быть уникальными.Предположим, например, что мы разработали таблицу чтобы следить за всемипорядками каждый день для каждого продавца. Каждая строка такой таблицы представляет сумму чисел любых порядков, а не просто индивидуальный порядок. В этомслучае, мы могли бы устранить некоторые возможные ошибки убедившись что на ка-ждый день имеется не более чем одна строка для данного продавца, или что каждаякомбинация полей snum и odate является уникальной. Вот как например мы могли бысоздать таблицу с именем Salestotal:CREATE TABLE Salestotal( cnuminteger NOT NULL,odate date NULL,totamt decimal,UNIQUE (snum, odate));Кроме того, имеется команда, которую вы будете использовать, чтобы помещатьтекущие данные в эту таблицу:INSERT INTO SalestotalSELECT snum, odate, SUM (amt)FROM OrdersGROUP BY snum, odate;ОГРАНИЧЕНИЕ ПЕРВИЧНЫХ КЛЮЧЕЙДо этого мы воспринимали первичные ключи исключительно как логические понятия.

Хоть мы и знаем что такое первичный ключ, и как он должен использоваться влюбой таблице, мы не ведаем "знает" ли об этом SQL. Поэтому мы использовали ограничение UNIQUE или уникальные индексы в первичных ключах, чтобы предписывать им уникальность. В более ранних версиях языка SQL это было необходимо имогло выполняться этим способом.

Однако теперь SQL поддерживает первичныеключи непосредственно с ограничением Первичный Ключ (PRIMARY KEY). Это ограничение может быть доступным или недоступным вашей системе.PRIMARY KEY может ограничивать таблицы или их столбцы. Это ограничениеработает так же как и ограничение UNIQUE, за исключением когда только один первичный ключ (для любого числа столбцов) может быть определен для данной таблицы. Имеется также различие между первичными ключами и уникальностью столбцов вспособе их использоваться с внешними ключами, о которых будет рассказано в Главе19. Синтаксис и определение их уникальности те же что и для ограничения UNIQUE.Первичные ключи не могут позволять значений NULL.

Это означает что, подобнополям в ограничении UNIQUE, любое поле, используемое в ограничении PRIMARYKEY, должно уже быть обьявлено NOT NULL.Имеется улучшеный вариант создания нашей таблицы Продавцов:CREATE TABLE Salestotal( snum integer NOT NULL PRIMARY KEY,sname char(10) NOT NULL UNIQUE,city char(10),comm decimal );Как вы видете, уникальность (UNIQUE) полей может быть обьявлена для той жесамой таблицы. Лучше всего помещать ограничение PRIMARY KEY в поле (или в поля) которое будет образовывать ваш уникальный идентификатор строки, и сохранитьограничение UNIQUE для полей которые должны быть уникальными логически (такиекак номера телефона или поле sname), а не для идентификации строк.ПЕРВИЧНЫЕ КЛЮЧИ БОЛЕЕ ЧЕМ ОДНОГО ПОЛЯОграничение PRIMARY KEY может также быть применено для многочисленныхполей, составляющих уникальную комбинацию значений.

Предположим что ваш первичный ключ — это имя, и вы имеете первое имя и последнее имя сохраненными вдвух различных полях (так что вы можете организовывать данные с помощью любогоиз них). Очевидно, что ни первое ни последнее имя нельзя заставить быть уникальным самостоятельно, но мы можем каждую из этих двух комбинаций сделать уникальной.Мы можем применить ограничение таблицы PRIMARY KEY для пар:CREATE TABLE Namefield(firstname char (10) NOT NULL,lastname char (10) NOT NULLcitychar (10),PRIMARY KEY (firstname, lastname));Одна проблема в этом подходе та, что мы можем вынудить появление уникальности — например, введя Mary Smith и M. Smith.

Это может ввести в заблуждение, потому что ваши служащие могут не знать кто из них кто. Обычно более надежныйспособ чтобы определять числовое поле которое могло бы отличать одну строку отдругой, это иметь первичный ключ, и применять ограничение UNIQUE для двух именполей.ПРОВЕРКА ЗНАЧЕНИЙ ПОЛЕЙКонечно, имеется любое число ограничений, которые можно устанавливать дляданных, вводимых в ваши таблицы, чтобы видеть, например, находятся ли данные всоответствующем диапазоне или правильном формате, о чем SQL естественно неможет знать заранее.

По этой причине, SQL обеспечивает вас ограничением CHECK,которое позволяет вам установить условие, которому должно удовлетворять значение, вводимое в таблицу, прежде чем оно будет принято. Ограничение CHECK состоит из ключевого слова CHECK сопровождаемого предложением предиката, которыйиспользует указанное поле. Любая попытка модифицировать или вставить значениеполя, которое могло бы сделать этот предикат неверным — будет отклонена.Давайте рассмотрим еще раз таблицу Продавцов. Столбец комиссионных выражается десятичным числом и поэтому может быть умножен непосредственно на суммуприобретений, в результате чего будет получена сумма комиссионных (в долларах)продавца с установленым справа значком доллара ($).Кто-то может использовать понятие процента, однако ведь, можно об этом и незнать.

Если человек введет по ошибке 14 вместо .14 чтобы указать в процентах своикомиссионные, это будет расценено как 14.0, что является законным десятичным значением, и будет нормально воспринято системой. Чтобы предотвратить эту ошибку,мы можем наложить ограничение столбца — CHECK чтобы убедиться что вводимоезначение меньше чем 1.CREATE TABLE Salespeople(snum integer NOT NULL PRIMARY KEY,sname char(10) NOT NULL UNIQUE,city char(10),comm decimal CHECK (comm < 1));ИСПОЛЬЗОВАНИЕ CHECK, ЧТОБЫ ПРЕДОПРЕДЕЛЯТЬДОПУСТИМОЕ ВВОДИМОЕ ЗНАЧЕНИЕМы можем также использовать ограничение CHECK чтобы защитить от ввода вполе определенных значений, и таким образом предотвратить ошибку. Например,предположим, что единствеными городами в которых мы имели ведомства сбыта являются Лондон, Барселона, Сан Хосе, и Нью Йорк.

Если вам известны все продавцы,работающие в каждом из этих ведомств, нет необходимости позволять ввод другихзначений. Если же нет, использование ограничения может предотвратить опечатки идругие ошибки.CREATE TABLE Salespeople(snum integer NOT NULL UNIQUE,sname char(10) NOT NULL UNIQUE,city char(10)CHECK (city IN ('London', 'New York', 'San Jose', 'Barselona')),comm decimal CHECK (comm<1));Конечно, если вы собираетесь сделать это, вы должны быть уверены что вашакомпания не открыла уже новых других ведомств сбыта. Большинство программ базданных поддерживают команду ALTER TABLE (см.

Главу 17) которая позволяет вамизменять определение таблицы, даже когда она находится в использовании. Однако,изменение или удаление ограничений не всегда возможно для этих команд, даже там,где это вроде бы поддерживается.Если вы использовали систему, которая не может удалять ограничения, вы будете должны создавать (CREATE) новую таблицу и передавать информацию из старой таблицы в нее всякий раз, когда вы хотите изменить ограничение. Конечно же Выне захотите делать это часто, и со временем вообще перестанете это делать.Создадим таблицу Порядков:CREATE(onumamtodatecnumsnumTABLE Ordersinteger NOT NULL UNIQUE,decimal,date NOT NULL,integer NOT NULL,integer NOT NULL);Как мы уже говорили в Главе 2, тип DATЕ (ДАТА) широко поддерживается, но неявляется частью стандарта ANSI.

Характеристики

Тип файла
PDF-файл
Размер
1,41 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6505
Авторов
на СтудИзбе
302
Средний доход
с одного платного файла
Обучение Подробнее