| 
            Скачать 0.73 Mb.
           
 | 
| Межтабличные связи и ключи. Межтабличную связь можно объявить только для пары таблиц (бинарную) и только типа (1:N) – (Родительская таблица : Дочерняя таблица). Связь определяется с помощью пары ключей: родительский ключ (REFERENCES) – один из уникальных ключей родительской таблицы (чаще всего, это ее первичный ключ), внешний ключ (FOREIGN KEY) – ключ дочерней таблицы (как правило, это неуникальный ключ). В этой связи строке родительской таблицы соответствуют все строки дочерней таблицы, у которых значение внешнего ключа равно значению родительского ключа строки родительской таблицы. Одна и та же таблица может быть и родительской и дочерней для нескольких таблиц, но в разных связях. Еще раз отметим, что родительский ключ уникальный, поэтому получаем связь типа 1:N, т.к. в родительской таблице не более одной строки с заданным значением такого ключа. Связь объявляется при дочерней таблице 
 Ограничения целостности базы данных. Ограничения целостности (Integrity Constraint) – это условия правильности данных. СУБД не допускает внесения изменений в данные таблиц, при которых нарушаются объявленные требования к правильности данных. Ограничения целостности можно классифицировать. 
 Стратегии поддержания ссылочной целостности. Существуют две основные стратегии поддержания ссылочной целостности. 
 Эти стратегии являются стандартными и присутствуют во всех СУБД, в которых имеется поддержка ссылочной целостности. В некоторых СУБД имеются дополнительные варианты стратегии поддержания ссылочной целостности. В дополнение к системным стратегиям программист может придумать свои уникальные стратегии поддержания ссылочной целостности и реализовать их, используя триггера и транзакции. Средства описания баз данных (DDL) в SQL. CREATE TABLE ИмяТаблицы (Колонка, ... [, ОграничениеТаблицы, ...]) Колонка = ИмяКолонки ТипКолонки [DEFAULT Константа] [ОграничениеКолонки ...] ОграничениеКолонки = NOT NULL | UNIQUE | PRIMARY KEY | CHECK(Условие) | REFERENCES ИмяРодительскойТаблицы [(ИмяЕеКолонки)] [СтратегияПоддержки] ОграничениеТаблицы = CHECK(Условие) | UNIQUE (ИмяКолонки, ...) | PRIMARY KEY (ИмяКолонки, ...) | FOREIGN KEY (ИмяКолонки, ...) REFERENCES ИмяРодительскойТаблицы [(ИмяЕеКолонки, ...)] [СтратегияПоддержки] СтратегияПоддержки = ON DELETE CASCADE | ON UPDATE CASCADE Оператор CREATE TABLE описывает (и создает пустую) таблицу, ее ограничения целостности и ее связи с родительскими таблицами. 
 
 ПРИМЕР. /* Table: PSTS, ПОСТАВЩИКИ */ CREATE TABLE PSTS ( KPST INTEGER DEFAULT 0 NOT NULL PRIMARY KEY, IMPST VARCHAR(20) DEFAULT '', ADRPST VARCHAR(30) DEFAULT '' ); /* Table: DET, ДЕТАЛИ */ CREATE TABLE DET ( KDET INTEGER DEFAULT 0 NOT NULL PRIMARY KEY, IMDET VARCHAR(20) DEFAULT '', CVET VARCHAR(10) DEFAULT '' ); /* Table: DOG, ДОГОВОРА */ CREATE TABLE DOG ( KPST INTEGER DEFAULT 0 NOT NULL REFERENCES PSTS, KDET INTEGER DEFAULT 0 NOT NULL REFERENCES DET, KOL INTEGER, DTN DATE, DTK DATE, PRIMARY KEY (KPST, KDET), CHECK (DTN ); /* Table: PST, ПОСТАВКИ */ CREATE TABLE PST ( KPST INTEGER DEFAULT 0 NOT NULL, KDET INTEGER DEFAULT 0 NOT NULL, KOL INTEGER, DTP DATE CHECK (DTP>'01.01.2000'), FOREIGN KEY (KPST, KDET) REFERENCES DOG ); Средства манипулирования данными (DML) в SQL. Имеется всего четыре, но очень мощных, оператора: SELECT (отбор), INSERT (вставка), DELETE (удаление), UPDATE (обновление). 
 SELECT [DISTINCT | ALL] СписокКолонок FROM ИмяТаблицы [ПсевдонимТаблицы], ... [WHERE УсловиеОтбора] [GROUP BY КлючГруппировки] [HAVING УсловиеОтбораПослеГруппировки] [ORDER BY КлючУпорядочения] [UNION [ALL] Select-оператор] ПсевдонимТаблицы – произвольное имя. Если псевдоним не указан, то по умолчанию он совпадает с ИменемТаблицы. Семантика оператора SELECT. По исходным FROM-таблицам, назовем их Т1,... строится безымянная выходная таблица. 
 Строится W3 = в W3 формируется точно по одной строке для каждой группы из W2. Способ формирования такой строки по группе определяется СпискомКолонок, детали рассмотрим позже. 
 Строки полученного результата добавляются к W4, поэтому результат UNION-фразы должен быть таблицей, совместимой с W4. Если UNION-фраза не имеет уточнения ALL, то добавляются только строки, хотя бы чем-то отличающиеся по значению от строк, уже имеющихся в W4. 
 Выражения в SQL. 
 
 Групповые выражения строятся с помощью групповых функций. 
 Если указано уточнение DISTINCT, то каждое из полученных для строк группы значений ПростогоВыражения участвует в сумме точно один раз без повторений. 
 Аргумент = * | DISTINCT ПростоеВыражение имеет значением для Аргумент = * - количество строк в группе, а для другого вида Аргумента –количество различных значений ПростогоВыражения по всем строкам группы. ПРИМЕР. Пусть таблица поставок PST сгруппирована по ключу группировки PST.KDET. COUNT(DISTINCT PST.KPST) – количество разных поставщиков уже поставивших деталь KDET. COUNT(*) – количество партий этой детали уже полученных от всех поставщиков. SUM(PST.KOL) – общее количество в штуках детали KDET уже полученное, суммарно по всем поставщикам. Из вышеприведенных групповых выражений можно строить более сложные групповые выражения, используя дополнительно константы, имена полей и операции базовых типов данных. 
 Ниже Выражение – простое или групповое выражение. 
 Набор операций Сравнения для базовых типов данных: = < > и т.п. 
 SelectOne-оператор должен строить одно колоночную таблицу с одной строкой. 
 E1 BETWEEN E2 AND E3 в терминах языка Паскаль имеет смысл E1 IN [E2..E3], а NOT – отрицание. 
 E1 IN (E2,...) в терминах языка Паскаль: E1 IN [E2,...]. 
 SelectList-оператор строит одно колоночную таблицу. 
 E > ALL (SelectList-оператор) имеет смысл: E строго больше всех значений из строк одно колоночной таблицы. SOME ... хотя бы одного значения... 
 Имеет смысл: результат Select-оператора непустая таблица. Из вышеприведенных условий можно строить более сложные с помощью операций логики высказываний: AND OR NOT. Теперь вернемся к синтаксису оператора SELECT. 
 Если надо включить все колонки FROM-таблиц, то качестве элемента СпискаКолонок можно использовать [ПсевдонимТаблицы.]* Имена колонок результирующей таблицы: 
 
 
 ПРИМЕРЫ. 
 SELECT Psts.ImPst, Pst.Kol FROM Pst, Psts WHERE (Psts.KPst=Pst.KPst) AND (Pst.KDet=1010) AND (Pst.Kol>1000) 
 SELECT KDet,COUNT(DISTINCT KPst) AS KolPst FROM Pst GROUP BY KDet 
 SELECT MAX(Det.ImDet), Det.KDet, COUNT(*) AS KolP FROM Det,Pst WHERE Det.KDet=Pst.KDet GROUP BY Det.KDet ORDER BY 1 Замечание: MAX пришлось использовать по техническим причинам – InterBase «не любит неключевые поля там». 
 SELECT DISTINCT Dog.* FROM Dog,Pst WHERE (Dog.KPst=Pst.KPst)AND(Dog.KDet=Pst.KDet) Замечание: Задачу решает декартово произведение с выборкой (естественное соединение), DISTINCT исключает повторы, появляющиеся от декартова произведения. 
 SELECT Dog.* FROM Dog WHERE NOT EXISTS ( SELECT Pst.* FROM Pst WHERE (Dog.KPst=Pst.KPst)AND(Dog.KDet=Pst.KDet)) 
 SELECT Dog.KPst,Dog.KDet, SUM(Pst.Kol)-MAX(Dog.Kol) FROM Dog,Pst WHERE (Dog.KPst=Pst.KPst)AND(Dog.KDet=Pst.KDet) GROUP BY Dog.KPst,Dog.KDet HAVING SUM(Pst.Kol)>Dog.Kol Замечание: опять пришлось использовать MAX по техническим причинам. | 
|  | Аис поз Установка. Обновление версии. Резервное копирование базы данных. Восстановление базы данных. 5 |  | Windows Банк Клиент Инструкция по переходу на версию 1 Для перехода на версию 1 с предыдущих версий системы Банк-Клиент нужно сначала выполнить установку новой версии с созданием пустой... | 
|  | Финансовая разведка Тем не менее, криминальный рынок полон объявлений, предлагающих приобрести по сходной цене базы данных мвд, гибдд, сотовых операторов,... |  | Инструкция по обновлению фк цз Фк цз в администрирование, в авторизации набрать admin, пароль hcadmin. В главном меню выбрать «Операции» – «Резервное копирование... | 
|  | Инструкция по обновлению фк рир Фк рир в администрирование, в авторизации набрать admin, пароль hcadmin. В главном меню выбрать «Операции» – «Резервное копирование... |  | Пояснительная записка Студент Организация данных. Sql дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между... | 
|  | Пояснительная записка Студент Организация данных. Sql дает пользователю возможность изменять структуру представления данных, а также устанавливать отношения между... |  | Методические указания к курсовой работе по дисциплине Базы данных... Дисциплина «Базы данных» для направления 230700. 62 «Прикладная информатика» подготовки бакалавра | 
|  | Методические указания к практическим работам по дисциплине «Базы данных» Методические указания предназначены для проведения практических занятий по дисциплине «Базы данных», для специальности ксиК |  | Пер с англ. — М. Издательский Архитектура системы баз данных 65 Глава Введение в реляционные базы данных 92 | 
|  | Инструкция по установке и работе с программой заполнение базы данных В настоящем документе представлена краткая инструкция пользователю по установке и работе с программой Заполнение базы данных студентов... |  | Лекция Язык sql 46 вставка одного запроса внутрь другого 68 как работает... Эти базы данных создаются и функционируют под управлением специальных программных комплексов, называемых системами управления базами... | 
|  | Методические указания для выполнения лабораторных работ и «Базы данных» Лабораторная работа №1 «Организация хранения данных в субд ms access» |  | 3. Заполнение базы данных, модификация данных На предыдущем этапе... ... | 
|  | Лабораторная работа №1: Создание баз данных В этой утилите можно выполнить типовые задачи обслуживания баз данных, такие как резервирование и восстановление. Здесь можно настраивать... |  | Программа дисциплины «Информатика» Е дисциплины «Информатика» учебным планом отводится 200 часов, в том числе лекционные занятия – 34 часов, лабораторные работы – 72... | 
| Поиск |