Lab5_SQL (1059123), страница 3

Файл №1059123 Lab5_SQL (Лабораторная №5) 3 страницаLab5_SQL (1059123) страница 32017-12-28СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Tables таблицу dbo. Customers.

  1. Щелкните правой кнопкой на папке Constraints и выберите команду New Constraint.

  1. Введите в текстовый блок (Name) диалогового окна New Constraint имя CK_Zip.

  2. В текстовый блок Description введите описание Check for valid zip codes.

  1. Чтобы создать ограничение, принимающее пять чисел, которыми могут быть только цифры от 0 до 9, в текстовый блок Expression введите следующий код (рис. 10):

(zip like '[0-9][0-9][0-9][0-9][0-9]')

  1. Щелкните на кнопке Close.

  2. Щелкните на кнопке Save в левой верхней части панели инструментов.

  1. Закройте конструктор таблиц (он был открыт, когда вы начали создавать ограничение).

Рис. 10. Ввод ограничения на проверку данных

Чтобы протестировать созданное вами ограничение, введем в таблицу несколько новых записей, используя инструкцию INSERT.

  1. В меню SQL Server Management Studio щелкните на кнопке New Query, в открывшимся окне щелкните правой кнопкой мыши и выберите команду New Disigner.

  2. Введите в окно запроса следующий код:

USE sales

INSERT customers

VALUES ('Gary','McKee' , '111 Main', 'Palm Springs' , 'CA', '94312','7605551212')

3. Щелкните на кнопке Execute, чтобы выполнить запрос, и просмотрите полученные результаты (рис. 11).

  1. Чтобы просмотреть новую запись, введите и выполните следующий код:

SELECT * FROM customers

  1. Обратите внимание на то, что появилась запись со значением 1 в столбце CustID (поскольку свойство identity, описанное ранее, будет автоматически добавлять номер для новой строки).

  2. Чтобы протестировать ограничение на проверку путем добавления символов в поле Zip, выполните команду Query=>New Query.

  3. В окне запроса введите следующий код и обратите внимание на ввод букв в поле Zip:

USE sales

INSERT customers

VALUES ('Amanda', 'Smith', '817 3rd', 'Chicago', 'IL', 'AAB1C', '8015551212')

Запрос нарушил ограничение и не был выполнен.

Ограничения на проверку могут стать сильным союзником в борьбе с вводом неправильных данных. Вам всего лишь нужно определить, какие данные принадлежат столбцу, и создать ограничение, указывающее SQL Server не принимать других данных.

Рис. 11. Из семи вводимых полей ограничение "проверило на корректность” только одно

Ограничения на проверку бесполезны, когда пользователи забывают ввести данные в столбец. Для этого существуют ограничения на умолчания.

Использование ограничений на умолчания

Если пользователи оставляют пустыми поля, не включая их в инструкцию INSERT или UPDATE, которую они применяют для добавления или модификации записи, для заполнения этих полей используются ограничения на умолчания. Существует два типа умолчаний: умолчания объектов и умолчания определений. Объектные умолчания определяются при создании таблицы и влияют только на столбец, в котором были определены. Умолчания определений создаются отдельно от таблиц и предназначены для привязки к типу данных, определяемому пользователем. Использование умолчаний может существенно сэкономить время при вводе данных.

Предположим, что основная клиентура проживает в Калифорнии, поэтому люди, вводящие данные, вынуждены вводить сокращение СА для каждого нового клиента. Если у вас обширная база клиентов, то ввод этих двух букв для каждого из них может отнять массу времени. При использовании ограничения на умолчания пользователи смогут намеренно оставлять поле State на откуп программе SQL Server. Чтобы про­демонстрировать возможности ограничений на умолчания, мы создадим следующее определение в таблице Customers.

  1. Откройте SQL Server Management Studio. В окне Object Explorer раскройте
    папки Databases=> Sales=> Tables=> dbo.Customers=> Columns.

  2. Щелкните правой кнопкой мыши на столбце State и выберите команду Modify.

  3. В нижней половине окна введите в текстовый блок Default Value Or Binding текст 'СА' (с одинарными кавычками). Если что, SQL Server поместит эти одинарные кавычки за вас (рис. 12).

Рис. 12. Создание умолчания для столбца

  1. Щелкните на кнопке Save и выйдите из конструктора таблиц.

  1. Чтобы протестировать умолчания, щелкните в SQL Server Management Studio на кнопке New Query. Выберите команду New SQL Server Query и выполните подключение с использованием аутентификации Windows.

  1. Введите и выполните следующий код:

USE sales

INSERT customers (fname, lname, address, city, zip, phone)

VALUES ('Tom','Smith1', '609 Georgia','Fresho','33405','5105551212')

  1. Чтобы проверить, были ли введены буквы СА в поле State, выполните команду Query=>New Query.

  1. Введите и выполните следующий код:

SELECT * FROM customers

  1. Обратите внимание на то, что для записи Tom Smith в поле State есть аббревиатура штата СА.

Вот и все, что требуется сделать для обеспечения доменной целостности. Вы можете использовать ограничения на проверку, чтобы принудить пользователей вводить правильные данные, а ограничение на умолчания будет заполнять поля данными, ко­торые забыл ввести пользователь. Однако существует еще два метода обеспечения целостности. Далее мы рассмотрим, как не позволить пользователям дублировать за­писи путем обеспечения целостности сущности.

Обеспечение целостности сущностей

Обеспечение гарантии уникальности записей в таблицах и предотвращение их дублирования называется обеспечением целостности сущностей. Что нужно сделать, чтобы записи не дублировались в таблице? Представьте себе, что будет, если имя одного и того же клиента дважды повторяется в таблице Customers, дублируя таким образом данные. У вас будет один клиент с двумя идентификационными номерами.

Или же наоборот, предположим, что кто-то случайно ввел данные о двух клиентах с одним и тем же идентификатором. Это может создать большие проблемы при продажах или генерировании отчетов, поскольку вы не будете знать, кто из клиентов делал покупки — они оба выводятся как один. Вы можете избежать таких проблем, обеспечив целостность сущности. Для этого существует два способа. В первом способе применяется первичный ключ.

Использование первичных ключей

Первичный ключ используется для обеспечения гарантии уникальности каждой за­писи в таблице. Он выполняет эту задачу путем создания индекса специального типа, называемого уникальным индексом. Обычный индекс используется для ускорения доступа путем считывания всех значений в столбце и хранении организованного списка, локализующего запись с этим значением. Уникальный индекс генерирует не только этот список, но и не позволяет дублировать значения для хранения в индексе. Если пользователь пытается ввести в индексированное поле дублированное значение, то уникальный индекс вернет ошибку, а модификация данных не будет выполнена.

Предположим, что в качестве первичного ключа вы определили поле CustID таблицы Customers, и в таблице уже имеется клиент с идентификатором, равным 1. Если один из ваших пользователей попытается создать запись о другом клиенте с тем же номером, то он получит ошибку, а обновление не будет выполнено, поскольку значение CustID 1 уже перечислено в уникальном индексе первичного ключа. Конечно, это всего лишь пример: ваше поле CustID имеет заданное свойство identity, которое автоматически присваивает номер каждой вставляемой записи и не позволит вводить номера по своему усмотрению.

Первичный ключ должен быть создан из столбца (или столбцов) с уникальными значениями. Столбец identity является идеальным кандидатом на роль первичного ключа, поскольку значения, содержащиеся в нем, являются уникальными по определению. В таблице Customers имеется столбец identity, из которого мы создадим первичный ключ.

  1. Откройте SQL Server Management Studio и выполните подключение с использованием аутентификации Windows.

  2. В Object Explorer раскройте папки Databases=>Sales=>Tables.

  3. Щелкните правой кнопкой мыши на таблице Customers и выберите команду Modify Table.

  4. В окне конструктора таблиц щелкните правой кнопкой на поле CustID в столбце Column Name и выберите команду Set Primary Key.

  5. Обратите внимание на то, что слева от поля CustID теперь отображен значок ключа, указывающий, что поле является первичным ключом (рис. 13).

  6. Когда вы щелкнете в панели инструментов на значке Save, SQL Server создаст уникальный индекс, гарантирующий отсутствие дублированных значений в поле CustlD.

  7. Закройте конструктор таблиц.

Эта процедура проста, однако предположим, что нужно поддерживать целостность сущности отдельно в нескольких столбцах. Например, у нас имеется та­блица Employees с полем EmployeelD, определенным как первичный ключ, а также поле Social Security Number, в котором требуется обеспечить целостность сущности. Поскольку в таблице может быть лишь один первичный ключ, для обеспечения такой целостности сущности вам понадобится создать уникальное ограничение.

Рис. 13. В таблице создан первичный ключ

Использование ограничений на уникальность

Между ограничениями первичного ключа и ограничениями на уникальность существует два глобальных отличия. Первое состоит в том, что первичные ключи ис­пользуются вместе с внешними ключами для обеспечения целостности ссылок, чего не могут уникальные ключи. Второе отли­чие заключается в том, что ограничения на уникальность позволяют вставлять в поле пустые значения, чего нельзя делать с помощью первичных ключей. Во всем осталь­ном они служат одной цели — обеспечить уникальность данных, вставляемых в поле.

Ограничение на уникальность следует использовать в тех случаях, когда нужно гарантировать, что дублированные значения не будут добавляться в поле, не являющееся частью первичного ключа.

Поскольку идеального кандидата на роль уникального ограничения в наших таблицах нет, вы можете создать его в поле Phone.

  1. В SQL Server Management Studio щелкните на кнопке New Query.

  2. В раскрывающемся списке баз данных в панели инструментов выберите Sales.

  3. Введите и выполните следующий код:

ALTER TABLE customers

ADD CONSTRAINT CK_Phone

UNIQUE (Phone)

  1. В окне Object Explorer щелкните правой кнопкой на базе данных Sales и выберите команду Refresh.

  2. Расширьте папки Sales=>Tables=> Customers=> Keys.

  3. Ваше уникальное ограничение будет перечислено в папке Keys вместе с первичным ключом, созданным ранее (рис. 14).

Рис. 14. В папке Keys перечислено также и ограничение на уникальность

Теперь вы можете протестировать ограничение на уникальность, попытавшись добавитъ несколько дублирующихся телефонных номеров посредством Query Analyzer с помощью инструкции INSERT.

  1. Выберите пункт меню Query=>New Query.

  2. Введите и выполните следующий код, добавляющий новую запись в таблицу Customers:

USE sales

INSERT customers

VALUES ('Shane','Travis','806Star','Phoenix','AZ','85103','6021112222')

  1. Повторите выполнение запроса. Запрос не был выполнен, а в нижней части появилось сообщение о том, что дублированный телефонный номер нарушает ограничение UNIQUE_KEY .

Итак, вы знаете, как защитить вводимые в таблицу данные путем обеспечения целостности домена и сущности; осталось рассмотреть еще один тип целостности. Вам нужно знать, как защитить связанные данные, хранящиеся в разных таблицах, путем обеспечения целостности ссылок.

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

Тип файла
Документ
Размер
2,55 Mb
Тип материала
Высшее учебное заведение

Список файлов лабораторной работы

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