При попытке исполнения запроса: CREATE DOMAIN EMP_NO AS INTEGER CHECK (VALUE BETWEEN 1 AND 10000); Выдается ошибка: Неизвестный тип объекта "DOMAIN" в интсрукции CREATE, DROP или ALTER. Используется SQL Server MS SQL 2008R2 |
Проектирование баз данных
:Введение в модель данных SQL
: Информация
Опубликован: 10.10.2005 | Уровень: специалист | Доступ: платный | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Курс посвящен описанию базовых средств языка SQL в соответствии со стандартом SQL:2003. Задача состоит в том, чтобы представить язык как специфическую модель данных, происходящую от реляционной модели, но значительно от нее отличающуюся.
В соответствии с общими принципами представления модели данных в курсе представляется структурная часть модели – средства определения таблиц и представлений, целостная часть – средства определения ограничений целостности и триггеров, а также манипуляционная часть – оператор SELECT. Для полноты также обсуждаются средства обновления баз данных, контроля доступа, управления транзакциями, сессиями и подключениями к серверу баз данных.
Язык SQL появился в 1974 г. при выполнении исследовательского проекта System R компании IBM. Тогда и долгое время спустя считалось, что язык SQL является практической реализацией идей реляционной модели данных, а многие пользователи языка и сегодня придерживаются того же мнения. Однако в действительности эта точка зрения является неправильной, а данный курс направлен на то, чтобы обеспечить правильное понимание модели данных языка SQL. Следуя общим принципам определения модели данных, в первых двух лекциях курса мы описываем основные понятия структурной части модели данных SQL – типы данных и средства определения базовых таблиц. В этих же лекциях рассматривается целостная часть модели: средства определения целостности на уровне доменов, столбцов, таблиц и баз данных в целом. Следующие четыре лекции посвящены обсуждению различных аспектов манипуляционной части модели данных SQL, которая существенно сложнее традиционных алгебраических и логических механизмов реляционной модели данных. В лекции 7 рассматриваются средства языка SQL, предназначенные для обновления содержимого существующих баз данных, а также механизм определения и функционирования триггеров. Восьмая лекция посвящена обсуждению средств авторизации доступа, управления транзакциями, сессиями и подключениями. Наконец, завершающая курс лекция 9 содержит описание так называемых «объектных» расширений языка SQL, сближающих синтаксис языка с синтаксисом языковых средств объектно-ориентированных СУБД и еще более отдаляющих модель языка SQL от реляционной модели данных.
Цель: Основной целью курса является обеспечение базового понимания основ языка SQL в соответствии с последними стандартами языка (SQL:1999 и SQL:2003). Для этого мы абстрагируемся от многих особенностей языка, не носящих, по нашему мнению, фундаментального характера (в частности, от методов использования языка при разработке приложений и способов программирования серверных процедур и функций), а сосредотачиваемся на базовых, модельных свойствах языка. Правильное понимание языка на модельном уровне, четкое осознание отличия модели языка SQL от реляционной модели данных помогает избежать многих серьезных ошибок при разработке приложений на основе SQL-ориентированных СУБД, а также способствует более глубокому проникновению в технологию баз данных.
Необходимые знания: Требуется пройти курс «Введение в реляционные базы данных» (или освоить необходимый материал каким-либо другим образом), а также обладать предварительными знаниями, требующимися для прохождения упомянутого курса.
Предварительные курсы |
План занятий
Занятие | Заголовок << | Дата изучения |
---|---|---|
- | ||
Лекция 12 часа 42 минуты | Общее введение, типы данных и средства определения доменов
Оставшаяся часть этого курса посвящается языку реляционных баз данных SQL. В курсе о реляционных базах данных невозможно обойтись без материала, который относится к этому языку. Это связано совсем не с тем, что язык представляет собой особое достижение в области реляционных БД. Напротив, многие черты SQL, начиная с самых первых его вариантов, противоречили принципам реляционной модели данных, заложенным Эдгаром Коддом. С другой стороны, спецификация языка SQL, по своей сути, является завершенной спецификацией модели данных, которая сегодня играет роль суррогата реляционной модели.
Если бы мы попытались обойтись в этом курсе без обсуждения языка SQL, курс был бы полностью оторван от жизни. Сегодня SQL является lingua franca в мире баз данных. Интерфейсы, основанные на SQL, поддерживаются почти во всех используемых СУБД, далеко не все из которых первоначально разрабатывались как реляционные системы. И похоже, что эта ситуация при жизни нынешнего поколения радикальным образом не изменится. Кроме того, язык сам по себе достаточно интересен. В нем нашел отражение многолетний практический опыт многих людей, и он впитал в себя многие положительные (и отрицательные) черты других языков и подходов (не только языков баз данных и не только реляционного подхода).
В данной лекции после небольшой исторической справки и краткого введения в структуру языка SQL будут рассмотрены типы данных, допустимые в языке SQL и в SQL-ориентированных базах данных, а также языковые средства определения, изменения определения и отмены определения доменов.
Оглавление | - |
Тест 115 минут | - | |
Лекция 22 часа 9 минут | Средства определения базовых таблиц и ограничений целостности
Лекция посвящена средствам языка SQL, позволяющим определять (создавать) базовые таблицы, изменять определения базовых таблиц и отменять их. Поскольку важными составляющими определения базовой таблицы являются определения ограничений на уровнях столбцов и таблицы целиком, мы сочли уместным включить в эту же лекцию материал, посвященный средствам определения ограничений целостности общего вида (не привязанных к определениям базовых таблиц), изменения и отмены таких определений.
Оглавление | - |
Тест 215 минут | - | |
Лекция 31 час 27 минут | Общая характеристика оператора SELECT и организация списка ссылок на таблицы в разделе FROM
В этой и следующих трех лекциях рассматривается важнейший оператор языка SQL - оператор SELECT, предназначенный для выборки данных из SQL-ориентированной базы данных. Этот оператор имеет довольно сложную и развитую структуру, но, по нашему мнению, его необходимо знать любому специалисту, так или иначе связанному с использованием баз данных; поэтому в нашем курсе ему уделяется так много внимания. Первая лекция носит подготовительный характер. В ней мы рассматриваем виды скалярных выражений, используемые, прежде всего, в конструкциях оператора SELECT, обсуждаем базовую семантику выполнения этого оператора и анализируем принципы и разновидности указания таблиц, из которых производится выборка данных.
Оглавление | - |
Тест 315 минут | - | |
Лекция 41 час 46 минут | Предикаты раздела WHERE оператора SELECT
В этой лекции мы продолжим рассматривать механизм выборки данных языка SQL - оператора SELECT. Лекция целиком посвящена видам условных выражений, которые могут содержаться в разделе WHERE оператора выборки. Определяются и иллюстрируются на примерах запросов все виды предикатов, специфицированных в стандарте SQL:1999.
Оглавление | - |
Тест 415 минут | - | |
Лекция 52 часа 34 минуты | Группировка и условия раздела HAVING, порождаемые и соединенные таблицы
В этой лекции мы завершаем обсуждение основных (традиционных) конструкций оператора SELECT языка SQL. В разделе "Агрегатные функции, группировка и условия раздела HAVING" обсуждаются разделы GROUP BY и HAVING. Основной акцент делается на способах конструирования условий раздела HAVING. На примерах демонстрируется, что разделы GROUP BY и HAVING действительно полезны, а иногда и необходимы при формулировке запросов с вызовами агрегатных функций. В разделах "Ссылки на порождаемые таблицы в разделе FROM" и "Более сложные конструкции оператора выборки" мы возвращаемся к разновидностям ссылок на таблицу в разделе FROM и последовательно обсуждаем порождаемые таблицы, соединенные таблицы и порождаемые таблицы с горизонтальной связью.
Оглавление | - |
Тест 515 минут | - | |
Лекция 61 час 18 минут | Средства формулировки аналитических и рекурсивных запросов
В этой лекции мы завершаем обсуждение средств выборки данных языка SQL коротким описанием сравнительно недавно появившихся в языке SQL средств формулировки аналитических и рекурсивных запросов.
Оглавление | - |
Тест 615 минут | - | |
Лекция 72 часа 55 минут | Средства манипулирования данными
Название этой лекции не совсем правильно отражает ее реальное содержание. Собственно средствам языка SQL, предназначенным для обновления базы данных, посвящается только один из трех основных разделов. Однако и следующие два раздела непосредственно примыкают к этой теме. В разделе "Представления, над которыми возможны операции обновления" рассматриваются возможности выполнения операций обновления базы данных через представляемые таблицы. Обсуждается проблема в целом, подход к ее решению, применявшийся в ранних вариантах стандарта SQL, и решение, принятое в стандарте SQL:1999. Последний основной раздел лекции посвящается механизму триггеров, специфицированному в стандарте SQL:1999. Здесь тоже имеется явная связь с основной темой лекции, потому что главным условием срабатывания триггера является выполнение некоторой операции обновления базы данных, и действия, выполняемые в триггерной процедуре, как правило, тоже связаны с обновлением базы данных.
Оглавление | - |
Тест 715 минут | - | |
Лекция 82 часа 43 минуты | Средства языка SQL для обеспечения авторизации доступа к данным, управления транзакциями, сессиями и подключениями
В этой лекции обсуждаются основные средства SQL:1999, предназначенные для регулирования работы с базами данных. Сначала рассматривается механизм авторизации доступа к объектам SQL-ориентированной базы данных, основанный на понятиях идентификатора пользователя, имени роли и привилегии доступа. Затем описываются особенности SQL-транзакций и основные языковые средства, воздействующие на поведение транзакций. Наконец, обсуждаются зафиксированные в стандарте SQL средства управления подключением к серверу баз данных.
Оглавление | - |
Тест 815 минут | - | |
Лекция 92 часа 14 минут | Объектные расширения
В последней лекции этого курса мы кратко изложим суть объектных
расширений, которые включены в стандарт SQL:1999. Лекция основана не
на официальном тексте стандарта (он очень формален и скучен), а на
книге Джима Мелтона "Advanced SQL:1999. Understanding
Object-Relational and Other Advanced Features" (Morgan Kaufmann
Publishers, 2003), которая, по сути, является неформальным описанием
семантики (rationale) соответствующей части языка. В указанной книге
объектным расширениям языка SQL посвящено более 200 страниц.
Естественно, наше изложение будет гораздо более кратким.
Оглавление | - |
Тест 915 минут | - | |
5 часов | - |