Главная страница
Навигация по странице:

  • 3.2. Реляционная база данных

  • Таблица 3.7. ТРАПЕЗЫ КОД_ КОД_ТРАПЕЗЫ ТРАПЕЗА ----------- ------- 1 Завтрак 2 Обед 3 Ужин Таблица 3.8. РЕЦЕПТЫ

  • 3.3. Манипулирование реляционными данными

  • 3.3.1. Обновление отношений Отношения (например, отношение R, с атрибутами А1, А2, ..., An) могут до- полняться, удаляться или изменяться.Добавление

  • 3.3.2. Реляционные операции

  • Селекция (горизонтальное подмножество) R

  • Проекция (вертикальное подмножество) R

  • Пересечение R ∩ S

  • Соединения

  • Соединение R с Т по столбцам i и j (R[i Θ j]T)

  • Переименование атрибутов.

  • ЧАСТЬ I I ЯЗЫК SQL. ИЗВЛЕЧЕНИЕ ДАННЫХ

  • Кириллов В.В., Громов Г.Ю. - Введение в реляционные базы данных. Литература для вузов isbn 9785941577705 в книге рассматриваются основные понятия баз данных и систем управления ими


    Скачать 11.62 Mb.
    НазваниеЛитература для вузов isbn 9785941577705 в книге рассматриваются основные понятия баз данных и систем управления ими
    АнкорКириллов В.В., Громов Г.Ю. - Введение в реляционные базы данных.pdf
    Дата16.04.2018
    Размер11.62 Mb.
    Формат файлаpdf
    Имя файлаКириллов В.В., Громов Г.Ю. - Введение в реляционные базы данных.pdf
    ТипЛитература
    #18127
    страница4 из 28
    1   2   3   4   5   6   7   8   9   ...   28
    Глава 3
    Реляционный подход
    3.1. Реляционная структура данных
    В конце 60-х годов появились работы, в которых обсуждались возможности применения различных табличных даталогических моделей данных, т. е. возможности использования привычных и естественных способов представ- ления данных. Наиболее значительной из них была статья исследователя фирмы IBM д-ра Эдгара Кодда [9], где, вероятно, впервые был применен термин "реляционная модель данных".
    Будучи математиком по образованию Эдгар Кодд предложил использовать для обработки данных аппарат теории множеств (объединение, пересечение, разность, декартово произведение). Он показал, что любое представление данных сводится к совокупности двумерных таблиц особого вида, известного в математике как отношение — relation (англ.) [1, 4, 9].
    Наименьшая единица данных реляционной модели — это отдельное ато-
    марное (неразложимое) для данной модели значение данных. Так, в одной предметной области фамилия, имя и отчество могут рассматриваться как единое значение, а в другой — как три различных значения.
    Доменом называется множество атомарных значений одного и того же типа.
    Так, на рис. 1.1 домен пунктов отправления (назначения) — множество на- званий населенных пунктов, а домен номеров рейса — множество целых по- ложительных чисел.
    Смысл доменов состоит в следующем. Если значения двух атрибутов берутся из одного и того же домена, то, вероятно, имеют смысл сравнения, исполь- зующие эти два атрибута (например, для организации транзитного рейса можно дать запрос "Выдать рейсы, в которых время вылета из Москвы в Со- чи больше времени прибытия из Архангельска в Москву"). Если же значения

    Глава 3. Реляционный подход
    33
    двух атрибутов берутся из различных доменов, то их сравнение, вероятно, лишено смысла: стоит ли сравнивать номер рейса со стоимостью билета?
    Отношение на доменах D1, D2, ..., Dn (не обязательно, чтобы все они были различны) состоит из заголовка и тела. На рис. 3.1 приведен пример отноше- ния для расписания движения самолетов (см. рис. 1.1).
    Рис. 3.1.
    Отношение с математической точки зрения
    (Ai

    атрибуты,
    Vi

    значения атрибутов)
    Заголовок (на рис. 1.1 он назывался интерпретацией) состоит из такого фик- сированного множества атрибутов A1, A2, ..., An, что существует взаимно однозначное соответствие между этими атрибутами Ai и определяющими их доменами Di (i = 1, 2, ..., n).
    Тело состоит из меняющегося во времени множества кортежей, где каждый кортеж состоит в свою очередь из множества пар атрибут-значение (Ai:Vi),

    Часть
    I.
    Что такое база данных и СУБД
    34
    (i =1, 2, ..., n), по одной такой паре для каждого атрибута Ai в заголовке. Для любой заданной пары атрибут-значение (Ai:Vi) Vi является значением из единственного домена Di, который связан с атрибутом Ai.
    Степень отношения — это число его атрибутов. Отношение степени один называют унарным, степени два — бинарным, степени три — тернарным, а степени n — n-арным. Степень отношения
    РЕЙС
    (см. рис. 1.1) — 8.
    Кардинальное число или мощность отношения — это число его кортежей.
    Мощность отношения
    РЕЙС
    равна 10. Кардинальное число отношения изме- няется во времени в отличие от его степени.
    Поскольку отношение — это множество, а множества по определению не содержат совпадающих элементов, то никакие два кортежа отношения не могут быть дубликатами друг друга в любой произвольно-заданный момент времени.
    Пусть R — отношение с атрибутами A1, A2, ..., An. Говорят, что множество атрибутов K = (Ai, Aj, ..., Ak) отношения R является возможным ключом R тогда и только тогда, когда удовлетворяются два независимых от времени условия:

    уникальность — в произвольный заданный момент времени никакие два различных кортежа R не имеют одного и того же значения для Ai, Aj, ..., Ak;

    минимальность — ни один из атрибутов Ai, Aj, ..., Ak не может быть ис- ключен из K без нарушения уникальности.
    Каждое отношение обладает хотя бы одним возможным ключом, поскольку по меньшей мере комбинация всех его атрибутов удовлетворяет условию уникальности. Один из возможных ключей (выбранный произвольным обра- зом) принимается за его первичный ключ. Остальные возможные ключи, ес- ли они есть, называются альтернативными ключами.
    Упомянутые ранее и некоторые другие математические понятия явились тео- ретической базой для создания реляционных СУБД, разработки соответст- вующих языковых средств и программных систем, обеспечивающих их вы- сокую производительность, и создания основ теории проектирования баз данных. Однако для массового пользователя реляционных СУБД можно с успехом использовать неформальные эквиваленты этих понятий:

    отношение — таблица (иногда файл);

    кортеж — строка (иногда запись);

    атрибут — столбец, поле.
    При этом принимается, что запись означает экземпляр записи, а поле означает
    имя и тип поля.

    Глава 3. Реляционный подход
    35
    3.2. Реляционная база данных
    Реляционная база данных — это совокупность отношений, содержащих всю информацию, которая должна храниться в БД. Однако пользователи могут воспринимать такую базу данных как совокупность таблиц. Так в табл. 3.1—
    3.10 показаны таблицы базы данных, построенные по инфологической моде- ли базы данных "COOK" (рис. 2.8 и 2.9).
    Отметим, что большинство примеров, связанных с изучением основ языка
    SQL (см. главы 5—7), используют информацию из базы данных "COOK". По- этому представлялось целесообразным не только привести данные этой базы на прилагаемом к книге компакт-диске, но и в табл. 3.1—3.10, потратив шесть страниц текста. Урезаны лишь тексты рецептов (табл. 3.8) и число строк табл. 3.10.
    Так как иллюстративная база данных создавалась для лекционного курса в 1989 году, когда существовали "смешные" цены, а также исчезнувшие на- звания статусов (коопторг) и городов (Ленинград), то авторы пытались не- сколько раз ее модифицировать. Однако поняв, что изменение цен, статусов и названий идет быстрее, чем подготовка и, тем более, выпуск издания, они решили сохранить в книге старые цены и названия.
    Заметим также, что химический состав продуктов приведен для 1 кг их съе- добной части: основные пищевые вещества (белки, жиры и углеводы) даны в граммах, а минеральные вещества (калий, кальций, натрий) и витамины
    (B2, PP, C) — в миллиграммах. Калорийность блюд определяется по массе и калорийности каждого из продуктов, входящих в это блюдо: для получения значения калорийности продукта исходят из того, что при окислении 1 г уг- леводов или белков в организме освобождается в среднем 4,1 ккал, а при окислении 1 г жиров — 9,3 ккал. Стоимость продуктов дана в рублях, а тру- доемкость приготовления блюда — в копейках.
    Таблица 3.1. БЛЮДА
    КОД_БЛЮДА БЛЮДО КОД_ВИДА ОСНОВА ВЫХОД ТРУД
    --------- ---------------- -------- ------ ------ ----
    1 Салат летний 1 Овощи 200,0 3 2 Салат мясной 1 Мясо 200,0 4 3 Салат витаминный 1 Овощи 200,0 4 4 Салат рыбный 1 Рыба 200,0 4 5 Паштет из рыбы 1 Рыба 120,0 5 6 Мясо с гарниром 1 Мясо 250,0 3

    Часть
    I.
    Что такое база данных и СУБД
    36
    7 Сметана 1 Молоко 140,0 1 8 Творог 1 Молоко 140,0 2 9 Суп харчо 2 Мясо 500,0 5 10 Суп-пюре из рыбы 2 Рыба 500,0 6 11 Уха из судака 2 Рыба 500,0 5 12 Суп молочный 2 Молоко 500,0 3 13 Бастурма 3 Мясо 300,0 5 14 Бефстроганов 3 Мясо 210,0 6 15 Судак по-польски 3 Рыба 160,0 5 16 Драчена 3 Яйца 180,0 4 17 Морковь с рисом 3 Овощи 260,0 3 18 Сырники 3 Молоко 220,0 4 19 Омлет с луком 3 Яйца 200,0 5 20 Каша рисовая 3 Крупа 210,0 4 21 Пудинг рисовый 3 Крупа 160,0 6 22 Вареники ленивые 3 Молоко 220,0 4 23 Помидоры с луком 3 Овощи 260,0 4 24 Суфле из творога 3 Молоко 280,0 6 25 Рулет с яблоками 4 Фрукты 200,0 5 26 Яблоки печеные 4 Фрукты 160,0 3 27 Суфле яблочное 4 Фрукты 220,0 6 28 Крем творожный 4 Молоко 160,0 4 29 "Утро" 5 Фрукты 200,0 5 30 Компот 5 Фрукты 200,0 2 31 Молочный напиток 5 Молоко 200,0 2 32 Кофе черный 5 Кофе 100,0 1 33 Кофе на молоке 5 Кофе 200,0 2
    Таблица 3.2. ВИДЫ_БЛЮД
    КОД_ВИДА ВИД
    -------- -------
    1 Закуска
    2 Суп
    3 Горячее
    4 Десерт
    5 Напиток

    Глава 3. Реляционный подход
    37
    Таблица 3.3. ПРОДУКТЫ
    КОД_ПРОДУКТА ПРОДУКТ БЕЛКИ ЖИРЫ УГЛЕВ K CA NA B2 PP C
    ------------ -------- ------ ----- ----- ---- ---- ---- ---- ---- ---
    1 Говядина 189,0 124,0 0,0 3150 90 600 1,5 28,0 0 2 Судак 190,0 80,0 0,0 1870 270 0 1,1 10,0 30 3 Масло 60,0 825,0 90,0 230 220 740 0,1 1,0 0 4 Майонез 31,0 670,0 26,0 480 280 0 0,0 0,0 0 5 Яйца 127,0 115,0 7,0 1530 550 710 4,4 1,9 0 6 Сметана 26,0 300,0 28,0 950 850 320 1,0 1,0 2 7 Молоко 28,0 32,0 47,0 1460 1210 500 1,3 1,0 10 8 Творог 167,0 90,0 13,0 1120 1640 410 2,7 4,0 5 9 Морковь 13,0 1,0 70,0 2000 510 210 0,7 9,9 50 10 Лук 17,0 0,0 95,0 1750 310 180 0,2 2,0 100 11 Помидоры 6,0 0,0 42,0 290 140 400 0,4 5,3 250 12 Зелень 9,0 0,0 20,0 340 275 75 1,2 4,0 380 13 Рис 70,0 6,0 773,0 540 240 260 0,4 16,0 0 14 Мука 106,0 13,0 732,0 1760 240 120 1,2 22,0 0 15 Яблоки 4,0 0,0 113,0 2480 160 260 0,3 3,0 130 16 Сахар 0,0 0,0 998,0 30 20 10 0,0 0,0 0 17 Кофе 127,0 36,0 9,0 9710 180 180 0,3 1,8 0
    Таблица 3.4. ПОСТАВЩИКИ
    КОД_ПОСТАВЩИКА НАЗВАНИЕ СТАТУС ГОРОД АДРЕС ТЕЛЕФОН
    -------------- -------- ---------- --------- -------------- -------
    1 СЫТНЫЙ рынок Ленинград Сытнинская,3 2329916 2 ПОРТОС кооператив Резекне Садовая,27 317664 3 ШУШАРЫ совхоз Пушкин Новая, 17 4705038 4 ТУЛЬСКИЙ универсам Ленинград Тульский,5 2710837 5 УРОЖАЙ коопторг Луга Песчаная,19 789000 6 ЛЕТО агрофирма Ленинград Пулковская,8 2939729 7 ОГУРЕЧИК ферма Паневежис Укмерге,15 127331 8 КОРЮШКА кооператив Йыхви Нарвское ш.,64 432123

    Часть
    I.
    Что такое база данных и СУБД
    38
    Таблица 3.5. ПОСТАВКИ
    КОД_ПОСТАВЩИКА КОД_ПРОДУКТА ЦЕНА К_ВО ДАТА
    -------------- ------------ ------- ----- -----------
    1 11 1,50 50 14.05.1989 1 12 3,00 10 10.05.1989 1 15 2,00 170 10.05.1989 2 1 3,60 300 14.05.1989 2 6 3,60 80 14.05.1989 2 5 1,80 100 14.05.1989 3 7 0,40 200 14.05.1989 3 12 2,50 20 14.05.1989 3 15 1,50 200 14.05.1989 4 4 2,04 50 09.05.1989 4 13 0,88 150 09.05.1989 4 16 0,94 200 09.05.1989 4 17 4,50 50 09.05.1989 5 4 3,00 50 14.05.1989 5 10 0,50 130 14.05.1989 5 13 1,20 40 14.05.1989 5 14 0,50 70 14.05.1989 5 16 1,00 50 14.05.1989 6 10 0,70 90 10.05.1989 7 1 4,20 70 10.05.1989 7 3 4,00 250 10.05.1989 7 6 2,20 140 10.05.1989 7 8 1,00 150 14.05.1989 8 5 2,00 70 10.05.1989 8 11 1,00 100 10.05.1989
    Таблица 3.6. МЕНЮ
    СТРОКА КОД_ТРАПЕЗЫ КОД_БЛЮДА ДАТА
    ------ ----------- --------- -----------
    1 1 3 15.05.1989 2 1 6 15.05.1989 3 1 19 15.05.1989 4 1 21 15.05.1989

    Глава 3. Реляционный подход
    39
    5 1 31 15.05.1989 6 1 32 15.05.1989 7 2 1 15.05.1989 8 2 6 15.05.1989 9 2 9 15.05.1989 10 2 12 15.05.1989 11 2 14 15.05.1989 12 2 16 15.05.1989 13 2 18 15.05.1989 14 2 26 15.05.1989 15 2 28 15.05.1989 16 3 6 15.05.1989 17 3 8 15.05.1989 18 3 20 15.05.1989 19 3 16 15.05.1989 20 3 30 15.05.1989 21 3 31 15.05.1989
    Таблица 3.7. ТРАПЕЗЫ
    КОД_
    КОД_ТРАПЕЗЫ ТРАПЕЗА
    ----------- -------
    1 Завтрак
    2 Обед
    3 Ужин
    Таблица 3.8. РЕЦЕПТЫ
    КОД_ ВА-
    ИД БЛЮДА РЕЦЕПТ РИАНТ
    -- ----- ---------------------------------------------------------- -----
    1 1 Помидоры и яблоки нарезать кружочками, положить помидоры в
    2 2 Вареное охлажденное мясо, свежую зелень и вареную очищенну
    3 3 Зелень мелко нарезать и положить горкой в салатник. Свежие
    4 4 Вареные рыбу и морковь нарезать небольшими ломтиками, а по
    5 5 Филе судака припустить до готовности. Морковь спассеровать
    6 6 Мясо вареное нарезать тонкими кусочками, гарнировать ломти

    Часть
    I.
    Что такое база данных и СУБД
    40
    7 7 Сметану положить в стакан конической формы. Подавать на ст
    8 8 Протертый творог положить в салатник или на мелкую тарелку
    9 9 Грудинку говядины нарезать на куски и варить до полуготовн
    10 10 Филе судака припустить с маслом и веточкой сельдерея. Гото
    11 11 Судак очистить, разделать на филе с кожей и ребрами, нарез
    12 12 Промытый рис варить в кипящей воде 5-6 минут, откинуть на
    13 13 Мясо нарезать кубиками (30 г), добавить рубленый лук, соль
    14 14 Говядину нарезать на широкие ломти толщиной до 20 мм, отби
    15 15 Подготовленную рыбу нарезать на порционные куски; кожу на
    16 16 Сырые яйца смешать с пшеничной мукой, добавить сметану и с
    17 17 Нарезать кружочками морковь, положить в посуду, добавить п
    18 18 В протертый творог добавить яйца, сахарный песок, соль и п
    19 19 К свежим яйцам добавляют холодное молоко, соль и тщательно
    20 20 Рис сварить в воде до полуготовности, добавить кипящее мол
    21 21 Готовую рисовую рассыпчатую кашу смешать с холодным молоко
    22 22 В протертый творог положить яйца, соль, сахар, размягченно
    23 23 Спассеровать на масле мелко нарезанный лук. В конце пассер
    24 24 В протертый творог положить сметану, яичные желтки, растер
    25 25 Очистить яблоки, разрезать каждое на 8 частей и каждую час
    26 26 Не прорезая насквозь, удалить из яблок сердцевину и семена
    27 27 Запеченные яблоки (см. БЛЮДО 26) охладить и протереть чере
    28 28 Яйца размешать с сахаром и, взбивая, протереть, не доводя
    29 29 Очищенную и промытую морковь натереть на терке, залить вод
    30 30 Яблоки очистить от кожицы, удалить сердцевину и нарезать.
    31 31 Яблоки натереть на терке и отжать из них сок. В стакан вли
    32 32 Вскипятить воду в кофейнике со щепоткой соли или 1/2 чайно 1 33 32 Кофеварку или кастрюлю сполоснуть горячей водой, положить 2 34 33 Сварить черный кофе, как указано в БЛЮДЕ 32, взяв меньшее
    Таблица 3.9. СОСТАВ
    КОД_ КОД_
    БЛЮДА ПРОДУКТА ВЕС
    ----- -------- ----
    1 11 100 1 15 80 1 12 5 1 4 15 2 1 65 2 9 40 2 11 35
    КОД_ КОД_
    БЛЮДА ПРОДУКТА ВЕС
    ----- -------- ----
    12 7 350 12 13 35 12 3 5 12 16 5 13 1 180 13 11 100 13 10 40
    КОД_ КОД_
    БЛЮДА ПРОДУКТА ВЕС
    ----- -------- ----
    21 13 70 21 6 30 21 3 20 21 5 20 21 16 15 22 8 140 22 6 30

    Глава 3. Реляционный подход
    41
    2 12 20 2 5 20 2 4 20 3 11 55 3 15 55 3 6 50 3 12 20 3 10 15 3 16 5 4 2 50 4 11 50 4 4 40 4 9 35 4 5 20 4 12 5 5 2 80 5 9 40 5 3 25 5 12 5 6 1 80 6 11 150 6 4 30 6 12 10 7 6 125 7 16 15 8 8 75 8 6 50 8 16 15 9 1 80 9 10 30 9 11 25 9 13 35 9 12 15 9 3 15 10 2 70 10 7 250 10 3 20 10 14 15 10 12 5 11 2 100 11 9 20 11 10 20 11 3 5 11 12 2 13 12 20 13 3 5 14 1 90 14 7 50 14 6 20 14 10 10 14 3 5 14 12 5 14 14 3 15 2 100 15 9 20 15 5 20 15 3 20 15 10 10 15 12 5 16 5 120 16 7 35 16 6 15 16 14 9 16 3 5 17 9 150 17 7 50 17 13 25 17 3 20 17 12 10 17 14 5 18 8 140 18 6 30 18 14 15 18 5 10 18 16 15 19 5 120 19 7 45 19 10 20 19 3 15 20 13 50 20 7 75 20 15 75 20 16 10 20 3 5 22 14 20 22 16 15 22 5 8 23 11 250 23 10 65 23 3 20 24 8 80 24 7 100 24 5 40 24 6 30 24 16 20 24 3 10 24 14 10 25 15 120 25 16 35 25 14 30 25 8 20 25 3 20 26 15 150 26 16 20 26 3 2 27 15 50 27 7 150 27 5 80 27 16 35 27 3 2 28 8 100 28 5 20 28 6 20 28 16 15 28 3 10 29 15 150 29 9 200 29 16 15 30 15 70 30 16 10 31 7 150 31 15 150 31 16 25 32 17 8 33 17 8 33 16 25 33 7 75
    Таблица 3.10. ВЫБОР
    МЕСТО СТРОКА
    ----- ------
    1 1 1 3 1 5 1 8
    МЕСТО СТРОКА
    ----- ------
    6 1 6 4 6 6 6 7
    МЕСТО СТРОКА
    ----- ------
    11 1 11 3 11 5 11 8
    МЕСТО СТРОКА
    ----- ------
    16 2 16 3 16 6 16 7
    МЕСТО СТРОКА
    ----- ------
    21 1 21 3 21 6 21 7

    Часть
    I.
    Что такое база данных и СУБД
    42
    1 10 1 11 1 14 1 17 1 18 1 20 2 2 2 4 2 6 2 7 2 9 2 11 2 15 2 16 2 19 2 21 3 2 3 3 3 6 3 7 3 9 3 11 3 14 3 17 3 18 3 21 4 1 4 4 4 5 4 7 4 9 4 12 4 15 4 16 4 18 4 21 5 1 5 3 5 6 5 7 5 10 5 13 5 14 5 16 5 19 5 20 6 10 6 13 6 15 6 16 6 19 6 20 7 2 7 3 7 5 7 8 7 10 7 11 7 14 7 17 7 18 7 21 8 2 8 4 8 5 8 8 8 10 8 11 8 14 8 17 8 19 8 20 9 1 9 3 9 5 9 8 9 10 9 13 9 14 9 16 9 18 9 20 10 1 10 3 10 5 10 8 10 10 10 13 10 14 10 16 10 18 10 20 11 10 11 11 11 14 11 17 11 18 11 20 12 1 12 3 12 5 12 8 12 10 12 13 12 14 12 16 12 18 12 20 13 2 13 4 13 6 13 7 13 9 13 11 13 15 13 16 13 19 13 21 14 2 14 4 14 6 14 7 14 9 14 11 14 15 14 16 14 19 14 21 15 2 15 3 15 6 15 7 15 9 15 11 15 14 15 17 15 18 15 21 16 9 16 11 16 14 16 17 16 18 16 21 17 1 17 4 17 5 17 7 17 9 17 11 17 15 17 16 17 19 17 21 18 1 18 4 18 5 18 7 18 9 18 13 18 15 18 16 18 19 18 21 19 1 19 4 19 5 19 7 19 9 19 12 19 15 19 16 19 18 19 21 20 1 20 4 20 5 20 7 20 9 20 13 20 14 20 16 20 19 20 21 21 10 21 13 21 14 21 16 21 18 21 20 22 1 22 4 22 6 22 7 22 10 22 13 22 14 22 16 22 19 22 20 23 1 23 4 23 6 23 7 23 10 23 13 23 14 23 16 23 19 23 20 24 1 24 4 24 6 24 7 24 10 24 12 24 15 24 16 24 18 24 20 25 2 25 3 25 5 25 8 25 10 25 11 25 14 25 17 25 18 25 21
    В рассмотренной базе данных, как и в любой другой реляционной базе данных:

    каждая таблица состоит из однотипных строк и имеет уникальное имя;

    строки имеют фиксированное число полей (столбцов) и значений (множе- ственные поля и повторяющиеся группы недопустимы). Иначе говоря,

    Глава 3. Реляционный подход
    43
    в каждой позиции таблицы на пересечении строки и столбца всегда име- ется в точности одно значение или ничего;

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

    столбцам таблицы однозначно присваиваются имена, и в каждом из них размещаются однородные значения данных (даты, фамилии, целые числа или денежные суммы);

    полное информационное содержание базы данных представляется в виде явных значений данных, и такой метод представления является единст- венным. В частности, не существует каких-либо специальных "связей" или указателей, соединяющих одну таблицу с другой. Так, связи между строкой с
    КОД_БЛЮДА=9
    табл. 3.1 (
    БЛЮДА
    ) и строкой с
    КОД_ПРОДУКТА=13
    табл. 3.3 (
    ПРОДУКТЫ
    ) (для приготовления харчо нужен рис), представляют- ся не с помощью указателей, а благодаря существованию в табл. 3.9
    (
    СОСТАВ
    ) строки, в которой код блюда равен 9, а код продукта — 13;

    при выполнении операций с таблицей ее строки и столбцы можно обраба- тывать в любом порядке безотносительно к их информационному содер- жанию. Этому способствует наличие имен таблиц и их столбцов, а также возможность выделения любой строки или любого набора строк с указан- ными признаками (например, продуктов, не содержащих углеводов, но имеющих в своем составе витамин C).
    3.3. Манипулирование
    реляционными данными
    В главе 11 будет показано, что стремление к минимизации числа таблиц для хранения данных может привести к возникновению различных проблем при их обновлении, и будут даны рекомендации по разбиению некоторых боль- ших таблиц на несколько маленьких. Но как сформировать требуемый ответ, если нужные для него данные хранятся в разных таблицах?
    Предложив реляционную модель данных, Эдгар Кодд создал и инструмент для удобной работы с отношениями — реляционную алгебру. Каждая опера- ция этой алгебры использует одну или несколько таблиц (отношений) в каче- стве ее операндов и продуцирует в результате новую таблицу, т. е. позволяет "разрезать" или "склеивать" таблицы (рис. 3.2).
    Созданы языки манипулирования данными, позволяющие реализовать все операции реляционной алгебры и практически любые их сочетания. Среди

    Часть
    I.
    Что такое база данных и СУБД
    44
    них наиболее распространены SQL (Structured Query Language — структури-
    зованный язык запросов) и QBE (Quere-By-Example — запросы по образцу)
    [5, 6]. Оба относятся к языкам очень высокого уровня, с помощью которых пользователь указывает, какие данные необходимо получить, не уточняя процедуру их получения.
    Селекция
    Естественное соединение a
    b c
    d a
    b c
    d c
    d a
    b a
    b c
    d c
    d a
    b
    П
    ро ек ц
    ия
    Объединение Пересечение
    Разность
    Рис. 3.2.
    Некоторые операции реляционной алгебры
    С помощью единственного запроса на любом из этих языков можно соеди- нить несколько таблиц во временную таблицу и вырезать из нее требуемые строки и столбцы (селекция и проекция).
    3.3.1. Обновление отношений
    Отношения (например, отношение R, с атрибутами А1, А2, ..., An) могут до- полняться, удаляться или изменяться.
    Добавление
    Если эту операцию обозначить ADD и применить к отношению R, то можно записать:
    ADD (R; А
    1
    = d
    1
    , А
    2
    = d
    2
    , ..., А
    n
    = d n
    )

    Глава 3. Реляционный подход
    45
    или при фиксированном порядке имен атрибутов
    ADD (R; d
    1
    , d
    2
    , ..., d n
    ),
    где di — значение i-го атрибута добавляемого кортежа.
    Пример 3.1. Добавить в таблицу
    БЛЮДА
    (табл. 3.1) блюдо
    Шашлык
    :
    ADD(Блюда; Код_блюда=35, Блюдо='Шашлык', Код_вида=3, Основа='Мясо',
    Выход=200, Труд=6) или
    ADD (Блюда; 35, 'Шашлык', 3, 'Мясо', 200, 6)
    Цель операции — добавить указанный кортеж в определенное отношение.
    Результат операции может быть не согласован с целями операции по сле- дующим причинам:

    добавляемый кортеж не соответствует описанию (схеме) определенного отношения;

    некоторые значения кортежа не принадлежат соответствующим доменам
    (например, по описанию значения атрибута должны быть целыми числа- ми, а в операции указано текстовое значение);

    описанный кортеж совпадает по ключу с кортежем, уже находящимся в отношении.
    В каждом из этих случаев операция ADD (R; d
    1
    , d
    2
    , ..., d n
    ) оставляет отноше- ние R неизменным и некоторым образом сообщает об ошибке.
    Пример 3.2. Добавить в таблицу
    ПРОДУКТЫ
    (табл. 3.3)
    Шпик
    :
    ADD (Продукты; Код_продукта=8, Продукт='Шпик', Белки=110, Жиры=850,
    Углеводы='Отсутствуют', K=2700, CA=120, NA=710, B2=1,2, PP=32, C=0)
    Эта операция не допускается по всем из перечисленных причин (продукт с номером
    Код_продукта=8
    уже существует,
    Углеводы именуется
    Углев и оце- ниваются в граммах, а не текстовой величиной).
    Удаление
    Эта операция, которую мы обозначим DEL, вводится для уничтожения сде- ланного. Для приведенного ранее отношения R она записывается в виде
    DEL (R; А
    1
    = d
    1
    , А
    2
    = d
    2
    , ..., А
    n
    = d n
    ) или при фиксированном порядке имен атрибутов
    DEL (R; d
    1
    , d
    2
    , ..., d n
    ).
    Пример 3.3. Из таблицы
    ПОСТАВЩИКИ
    (табл. 3.5) удалить поставщика
    ПОРТОС
    :
    DEL (Поставщики; Код_поставщика=3, Название='ПОРТОС', Город='Резекне')

    Часть
    I.
    Что такое база данных и СУБД
    46
    или
    DEL (Поставщики; 3, 'ПОРТОС', 'Резекне')
    В действительности нет необходимости задавать так много информации, чтобы однозначно определить кортеж, который надо удалить. Достаточно определить значения некоторого ключа. Если К = {Вр, Bj, ..., Вn} является ключом, то можно использовать следующую форму записи:
    DEL (R; B
    1
    = e
    1
    , B
    2
    = e
    2
    , ..., B
    n
    = e n
    ).
    Краткая форма записи операции удаления:
    DEL (Поставщики; 3)
    Операция удаления не выполняется лишь в тех случаях, когда заданный кор- теж отсутствует в отношении. Тогда отношение остается неизменным и со- общается об ошибке условия. Ограничения на удаление последнего кортежа из отношения не накладывается; пустое отношение допускается.
    Изменение
    Вместо того чтобы добавлять или удалять целый кортеж отношения, можно изменить лишь часть кортежа. Для R при {С1, С2, ..., Ср} из {А1, А2.....An} операция изменения имеет вид:
    CH (R; A
    1
    = d
    1
    А
    2
    = d
    2
    , ..., А
    n
    = d n
    ; C
    1
    = e
    1
    C
    2
    = e
    2
    ..... C
    p
    = e p
    ).
    Или если K = {B
    1
    = e
    1
    , B
    2
    = e
    2
    , ..., B
    n
    = e n
    } является ключом, то
    C
    1
    = e
    1
    C
    2
    = e
    2
    ..... C
    p
    = e p
    Пример 3.4. Уменьшить количество лука в бастурме до 30 г.
    СН (Состав; Код_блюда=13, Код_продукта=10, Вес=40; Вес=30) или
    СН (Состав; Код_блюда=13; Вес=30)
    Операция изменения является наиболее удобной. Тот же результат может быть получен с помощью операции добавления, следующей за операцией удаления. Таким образом, все возможные ошибки операции добавления и удаления присущи и операции изменения: указанный в операции кортеж не существует, изменения имеют неправильный формат или используемые зна- чения не принадлежат существующему домену или измененный кортеж име- ет тот же ключ, что и кортеж, уже принадлежащий отношению.
    3.3.2.
    Реляционные операции
    Операции обновления — это операции над кортежами. В данном разделе мы будем рассматривать операторы, которые включают в себя целое отношение, т. е. позволяют "разрезать" и "склеивать" таблицы.

    Глава 3. Реляционный подход
    47
    Унарные операции
    Эти операции служат для преобразования одного отношения в другое, яв- ляющееся подмножеством первого.
    Селекция (горизонтальное подмножество) R создается из тех строк R, ко- торые удовлетворяют заданным условиям, соединяемым логическими опера- торами AND, OR, NOT AND и NOT OR. Каждое условие может состоять из имени какого-либо столбца R, оператора сравнения (< , <= , = , <> , > , >=) и константы или имени другого столбца R. При этом сравниваемые столбцы должны быть определены на одном и том же домене.
    R
    R[B=1]
    R[D=
    ε
    OR B>1]
    A
    B
    C
    D
    A
    B
    C
    D
    A
    B
    C
    D












    a
    1
    Б
    ε
    a
    1
    Б
    ε
    a
    1
    Б
    ε
    b
    7
    Г
    ω
    c
    1
    Я
    ε
    b
    7
    Г
    ω
    c
    1
    Я
    ε
    a
    1
    Г
    ω
    c
    1
    Я
    ε
    a
    1
    Г
    ω
    b
    7
    Б
    ε
    b
    7
    Б
    ε
    Пример 3.5. Найтиблюда, в состав которых входит более 15 г зелени
    (
    Код_продукта=12
    ):
    Состав [Код_продукта=12AND Вес > 15]:
    КОД_БЛЮДА КОД_ПРОДУКТА ВЕС
    --------- ------------ ----
    2 12 20 3 12 20 13 12 20

    Часть
    I.
    Что такое база данных и СУБД
    48
    Проекция (вертикальное подмножество) R
    создается из указанных столб- цов R (в заданном порядке) с последующим исключением избыточных дуб- ликатов строк.
    R
    R[AB1]
    R[DCA]
    A
    B
    C
    D
    A
    B
    D
    C
    A









    a
    1
    Б
    ε
    a
    1
    ε
    Б
    a b
    7
    Г
    ω
    b
    7
    ω
    Г
    b c
    1
    Я
    ε
    c
    1
    ε
    Я
    c a
    1
    Г
    ω
    ω
    Г
    a b
    7
    Б
    ε
    ε
    Б
    b
    Пример 3.6. Найти всех поставщиков продуктов и перечень всех городов, в которых они расположены:
    Поставщики [Название Город]
    НАЗВАНИЕ ГОРОД
    -------- ---------
    СЫТНЫЙ Ленинград
    ПОРТОС Резекне
    ШУШАРЫ Пушкин
    ТУЛЬСКИЙ Ленинград
    УРОЖАЙ Луга
    ЛЕТО Ленинград
    ОГУРЕЧИК Паневежис
    КОРЮШКА Йыхви
    Бинарные операции
    К двум отношениям с одной и той же схемой могут быть применены опера- ции над множествами.

    Глава 3. Реляционный подход
    49
    Если R и S — два отношения со схемой ABCD, то отношения R U S, R ∩ H и
    R – S также имеют схему ABCD. При этом S и, например, S1 рассматривают- ся как одинаковые таблицы, так как в реляционных моделях схемы оценива- ются по именам, а не по последовательности столбцов.
    R
    S
    S1
    A
    B
    C
    D
    A
    B
    C
    D
    C
    B
    D
    A












    a
    1
    Б
    ε
    c
    4
    Г
    &
    Г
    4
    & c b
    7
    Г
    ω
    a
    1
    Г
    ε
    Г
    1
    ε
    a c
    1
    Я
    ε
    b
    7
    Г
    ω
    Г
    7
    ω
    b a
    1
    Г
    ω
    c
    1
    Я
    ω
    Я
    1
    ω
    c b
    7
    Б
    ε
    Объединение R U S содержит те строки, которые есть либо в R, либо в S, либо в обеих таблицах.
    R
    S
    R U S
    A
    B
    C
    D
    A
    B
    C
    D
    A
    B
    C
    D












    a
    1
    Б
    ω
    c
    4
    Г
    & a
    1
    Б
    ω
    b
    7
    Г
    ε
    a
    1
    Г
    ε
    b
    7
    Г
    ε
    c
    1
    Я
    ω
    b
    7
    Г
    ω
    c
    1
    Я
    ω
    a
    1
    Г
    ε
    c
    1
    Я
    ω
    a
    1
    Г
    ε
    b
    7
    Б
    ω
    b
    7
    Б
    ω
    c
    1
    Я
    & b
    7
    Г
    ω

    Часть
    I.
    Что такое база данных и СУБД
    50
    Если, например, разные пользователи базы данных "COOK" вводят во вре- менные таблицы информацию о новых блюдах, то с помощью операции объ- единения ее легко добавить в таблицы
    БЛЮДА
    и
    СОСТАВ
    , не заботясь о возмож- ном появлении нескольких одинаковых рецептов. Об этом же можно не заботиться при дополнении базы данных информацией из аналогичной базы данных другой организации, так как при объединении в таблицы добавляют- ся только уникальные строки.
    Разность R – S содержит только те строки, которые есть в R, но отсутствуют в S. Соответственно, S – R содержит те строки, которые есть в S, но отсутст- вуют в R.
    R
    S
    R

    S
    A
    B
    C
    D
    A
    B
    C
    D
    A
    B
    C
    D












    a
    1
    Б
    ω
    c
    4
    Г
    & a
    1
    Б
    ω
    b
    7
    Г
    ε
    a
    1
    Г
    ε
    b
    7
    Г
    ε
    c
    1
    Я
    ω
    b
    7
    Г
    ω
    b
    7
    Б
    ω
    a
    1
    Г
    ε
    c
    1
    Я
    ω
    b
    7
    Б
    ω
    Если, например, администратор базы данных "COOK" "раздобыл" аналогич- ную базу данных в другой организации, то путем вычитания однотипных таблиц легко выявить те сведения, которые можно было бы добавить в базу данных.
    Пересечение R ∩ S содержит только те строки, которые есть и в R, и в S. За- метим, что пересечение может быть определено как разность отношений:
    R∩S = R – (R– S).
    С помощью этой операции можно, например, выделить из таблиц базы дан- ных "COOK" поставщиков, которые поставляют продукты, используемые в существующих рецептах:
    Продукты [Код_продукта] ∩ Состав [Код_продукта] и т. п.

    Глава 3. Реляционный подход
    51
    Соединения— это операторы, позволяющие получить декартово произведе- ние двух отношений, а затем выделить его определенное подмножество.
    Декартово произведение двух отношений — это множество упорядоченных пар из кортежей: оно содержит все возможные строки, составленные сцепле- нием строки из первого отношения (начало создаваемой строки) со строкой из второго отношения. Следовательно, число строк произведения равно про- изведению числа строк сомножителей, а их длина — сумме длин строк со- множителей. Так декартово произведение R  Т содержит шесть столбцов и десять строк.
    R
    T
    R x T
    A
    B
    C
    D
    E
    F
    A
    B
    C
    D
    E
    F












    a
    1
    Б
    ω
    1
    & a
    1
    Б
    ω
    1
    & b
    7
    Г
    ε
    7
    $ a
    1
    Б
    ω
    7
    $ c
    1
    Я
    ω
    b
    7
    Г
    ε
    1
    & a
    1
    Г
    ε
    b
    7
    Г
    ε
    7
    $ b
    7
    Б
    ω
    c
    1
    Я
    ω
    1
    & c
    1
    Я
    ω
    7
    $ a
    1
    Г
    ε
    1
    & a
    1
    Г
    ε
    7
    $ b
    7
    Б
    ω
    1
    & b
    7
    Б
    ω
    7
    $
    Соединение R с Т по столбцам i и j (R[i Θ j]T) содержит те строки декартова произведения R  Т, в которых значение из i-гo столбца R находится в от- ношении Θ (< , <= , = , < > , >=, >) со значением из j-гo столбца Т. При этом сравниваемые столбцы должны быть определены на одном и том же домене.
    Кроме того, i и j могут рассматриваться не только как отдельные столбцы, но и как совместимые (совпадающие по числу, порядку и типам данных) мно- жества столбцов.

    Часть
    I.
    Что такое база данных и СУБД
    52
    Имеется несколько вариантов операции соединения:

    эквисоединение — это соединение, полученное при равенстве значений i и j (Θ = "=");

    естественноесоединение — это эквисоединение, в котором исключен столбец j;

    композиция — это эквисоединение, где исключены столбцы, по которым производилось соединение (столбцы i и j);

    тета-соединение — это соединения, полученные при любом значении Θ, кроме "=".
    Эквисоединение
    R[B=E]
    Естественное со- единение (без
    E)
    Композиция
    (без
    E и
    B)
    A
    B
    C
    D
    E
    F
    A
    B
    C
    D
    F
    A
    C
    D
    F















    a
    1
    Б
    ω
    1
    & a
    1
    Б
    ω
    & a
    Б
    ω
    & b
    7
    Г
    ε
    7
    $ b
    7
    Г
    ε
    $ b
    Г
    ε
    $ c
    1
    Я
    ω
    1
    & c
    1
    Я
    ω
    & c
    Я
    ω
    & a
    1
    Г
    ε
    1
    & a
    1
    Г
    ε
    & a
    Г
    ε
    & b
    7
    Б
    ω
    7
    $ b
    7
    Б
    ω
    $ b
    Б
    ω
    $
    Пример 3.7. Если вам надо попасть из Санкт-Петербурга в Сочи через Моск- ву и в вашей базе данных есть расписание полетов самолетов из Санкт-
    Петербурга в Москву и из Москвы в Сочи, то целесообразно выполнить тета- соединение расписаний с условием: время прибытия в Москву меньше вре- мени вылета в Сочи. Полученное отношение "Транзит" упростит процедуру подбора подходящих рейсов.
    Деление R : S. Для выполнения такой операции делитель S должен состоять из атрибутов (например, С D), являющихся подмножеством атрибутов дели- мого R (например, А В С D F). При этом частное R : S, если оно существует, состоит из тех атрибутов R, которых нет в S (т. е. атрибутов А В F).
    В процессе формирования R : S кортеж включается в него только тогда, ко- гда его декартово произведение с делителем S содержится в делимом R.

    Глава 3. Реляционный подход
    53
    R
    S
    R : S
    A
    B
    C
    D
    F
    C
    D
    A
    B
    F










    b
    7
    Б
    ω
    $
    Б
    ω
    a
    1
    & a
    1
    Б
    ω
    &
    Г
    ε
    c
    7
    $ b
    1
    Г
    ω
    & a
    1
    Г
    ε
    & c
    7
    Г
    ε
    $ a
    7
    Б
    ε
    & c
    7
    Б
    ω
    $
    Следует отметить, что операция деления может быть выражена через другие операции:
    1.
    Получить и запомнить проекцию делимого, состоящую из атрибутов, не принадлежащих делителю.
    2.
    Получить декартово произведение этой проекции на делитель.
    3.
    Вычесть из полученного произведения делимое.
    4.
    Получить проекцию разности, состоящую из атрибутов, не принадлежа- щих делителю.
    5.
    Определить частное как разность между проекциями, полученными в пп. 1 и 4.
    Переименование атрибутов. Иногда появляется необходимость соединить отношение с самим собой, игнорировав при этом связи по каким-либо его атрибутам. Это можно сделать копированием (проектированием один к од- ному) такого отношения и переименованием указанных атрибутов. Встреча- ются и другие случаи, когда возникает необходимость в переименовании ряда атрибутов отношения. Для выполнения операции переименования атри- бута А в атрибут В отношения R воспользуемся командой вида:
    REN (R; A = B)

    ЧАСТЬ
    I I
    ЯЗЫК SQL.
    ИЗВЛЕЧЕНИЕ ДАННЫХ
    1   2   3   4   5   6   7   8   9   ...   28


    написать администратору сайта