Главная » Просмотр файлов » Программирование баз данных MS SQL Server

Программирование баз данных MS SQL Server (1084479), страница 75

Файл №1084479 Программирование баз данных MS SQL Server (Программирование баз данных MS SQL Server) 75 страницаПрограммирование баз данных MS SQL Server (1084479) страница 752018-01-12СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

Под этим углом вполне могут рассматриваться и связи между объектами базы данных. Связи, поддерживаемые между объектами в базе данных (в основном строками), подразделяются на три основных типа: 0 "один к одному"; 0 "один ко многим"; С3 "многие ко многим". Каждый из этих типов связей имеет определенные разновидности, определяемые тем, может ли одна из сторон связи быть пустой или нет. Например, иногда возникает необходимость ввести в действие вместо связи "один к одному" связь "нуль или один к одному". Связь "один к одному" Определение связи "один к одному" полностью соответствует ее названию.

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

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

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

Речь идет о такой ситуации, в которой объем информации был слишком велик для того, чтобы его можно было поместить в одну строку. Напомним, что максимальный размер строки с данными, отличными от Нормализация и другие важные проблемы проектирования 293 ВДОВ, в СУБД 8О1. 8еггег составляет 8060 байтов.

Безусловно, эта величина намного больше по сравнению с 1962 байтами, которые служили в качестве ограничения размера строки в версии 6.5, но все равно возникают такие ситуации, в которых приходится хранить очень большое количество столбцов или пусть даже немного столбцов, но таких, которые содержат большой объем данных. Один из способов преодоления этого ограничения состоял в том, чтобы фактически создавались две разные таблицы и столбцы распределялись по этим таблицам. После этого между двумя подтаблицами устанавливалась связь "один к одному". Таким образом, благодаря применению соответствующих друг другу строк из двух таблиц появлялась возможность выполнить требования по хранению большого объема данных.

ЙЕЛоойЕдотжННО В.'СаМОй'Суэвд'-'ЗйК,''ЗЕ1ВВГ:ИЕ 'ПрвдуСМОтраи ПОЛ)нацЕНэннй'СЭПСОСОб ПОддвржКИ''Саяэн;"„одни,''К ОдМОёу". БЕауСЛСВНО; ЙжЕт'бЫтЬ аЬ4йИНуто 'таКМ';,тсрабОааэНИСЕ;;ЧУ . каждой:ртроэке'табглицы;'-'л должна' Срстветсгвоевть,'опресделенная строка'.в зеблице'-в, ио йосле реьгламсентацииуссловйй, согласно которымкажгдойстрокетдблйцм в должна сов)тветствовать:опРейаленцаЯС) Рьокатаблицыл',::вознивает, нееййедеьлениал'-:сэитУаЦивэ свЯ- звнйая, с: тем', что 'становится Ъейзаестным';-в какукутаблицу, йеобкодймо" вводить строку ВЛЕрВуК) ОЧЕрвэдЬ: Йодам,трЕЬУЕуря ОбаэолйЧЛИВ,*' ПрИНудИТЕЛЬйуЮ,'ПсдэцЕржКу Саяйй "'Одни:К одному.". в сувд эх зегежэто лучшее ревенве;-котоййа может бйть йримейено' в этом СЛуяав,' СОСтсйт В ОбЕСЭПэЕЧЕйИИ'ПрИКНудИтЕЛЬястс' ЕЫПОЛНЕНИя'-ВСЕК'ОсоарацИйэ:ВСЧВЕэКИ С-)ЛО.

мсщьюхренймой йр)эцедувы".АЕ этой х)занимсйпрсцедуре должен быть реаяизованалгб'риг)м';в,соответствгиэиокэсторыМ,'опаграцня.вотавкИ ОосуанотгаяяЕусйлРимзанйтеэльно к Обеим. .,:табЛИЦаМ, йЛИДООбЩЕ; НЕ Оц))ЩйютВЛЯЕтСЯ. 'С ПСДОбйсй ЦьИКЛИЧЕСКОй ааВЕСИМОС)ЪЮ НЕ МОГУГ:,'- спрсавитьоя ни;огбаниченйя 'внсещнего."клкэча ни твиггеры, Связь "нуль или один к одному" СУБД БОБ 8еггег обеспечивает поддержку экземпляров связи "нуль или один к одному". По существу такая связь аналогична связи "один к одному", за исключением того, что с одной из сторон связи допускается наличие или отсутствие строки, соответствующей другой строке.

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

В головной компании должна храниться информация обо всех заказчиках, независимо от того, чем они занимаются, но в филиале, обслуживающем строителей, вряд ли потребуется информация о железнодорожниках. В таком случае устанавливается связь, в которой сторона "нуль или один" соответствует филиалу, а сторона "один" — головной компании. СУБД 8О1. Бегчег позволяет обеспечить принудительную поддержку связей "нуль или один к одному" с помощью описанных ниже способов.

С использованием сочетания уникального или первичного ключа с ограничением внешнего ключа. Ограничение внешнего ключа позволяет следить за тем, 294 Глава 8 чтобы существовала по меньшей мере одна строка в таблице на стороне "один" (в рассматриваемом примере — в таблице головной компании), но это ограничение не позволяет добиться того, чтобы существовала только одна строка (ограничение внешнего ключа выполняется, даже если в родительской таблице имеется несколько соответствующих ему строк). А применение первичного ключа или ограничения уникальности позволяет гарантировать соблюдение условия, согласно которому количество уникальных строк не превышает одного. О С помощью триггеров.

Следует отметить, что для поддержки связей "нуль илн один к одному" триггеры должны быть заданы на обеих таблицах. Причина, по:которой е 6убд861-яежглегкоЪбесгпечиввется по)(гдесржка'бвтязсей '.,'еугпь,нпи 6ДИН:.К' ОййСМУ, -НО"НЕ'СВЯЗЕй -*ОДИН'-К'ОДНОУМУ",",ЗЙКЛЮЧаьтВЯ','В:,;тсгМ",,'Чте:В ПОСЛЕДНРМ'.СЛУЧасЕ. 'йЕЕОЗМОжНО ти)ущЕСтВИтЬ'::Виотааяу, :ВтрОК ОдНОВрЕМЕННО, га„ебв::табййцхы,' 'Езди::СзяЗЬ': ПбПНОЕ'- тьюоувечйетао()едеяепиЮ связи',одинукодногту!',,„тоневозможно:выяолнить встав)йготфо. Кн'-'НИ'-'В,пйНУ,':ИЗ.'табЛИЦ;",'йОСКОйэаУ",ВУДРУгтбйтабЛИЦЕ ад~а 'НЕт,,'СООтавтСтВУЮЩЕйтвй; СтРГЯГНЗ повтойу.,'арзнийавт.:неразрегшнмвп,.':ситуация:,6::другой::сторрйм,';.'-если; прнмйняется.";Евязн "нуль:,или:.однн к:одному,".;-',то,':можегт:быть-вначале,-вЫпопнена',:всгтавка отроки-'е,таблицу.:на , ОбпэатЕЛЬНОй СтГРРОНсЕСВЯЗИ'(НаптСРОНЕ ~ОДГЯ~'-');;а-братвы,-ЕЕЛИ ПстРабУатСяс,':ВСтаВИткятСГ, рухтфГ(тщху,"В:тгабЛИцуу:НауиввсбяэатЕЛЬНОй:;СтарОН)Е;(СтесрСНЕ тиуяЬ'=ИПИ',6дтнхй",):-:Телеков: Пгра-,.' 'бпаМаг',ВОйНИКавт И'.'ПрЫ',ИЕ))ртГЬЗрейНИН.:,'Оеяай,',",.ОДИН я'-'ОдНОМуЗВИ, МНОГИМ"-.'и:"Опии" К-иулш, 'одному,нпн.'убогим'", Связь "один к одному или многим" Связь "один к одному или многим" представляет собой своего рода производственную, обычную, повседневно применяемую связь с помощью внешнего ключа.

Обычно такая связь реализуется в виде определенной организации хранения данных на основе связей между таблицами заголовка и расшифровки. Превосходным примером такой связи может служить описанный выше вариант, в котором с помощью таблиц Огбегэ и Огоегпега11э отдельно представлены заказы и содержимое заказов (рис. 8.3). Таблица расшифровки ОгоегРеса11э (находящаяся на стороне "один или многие" этой связи ) не может применяться отдельно от таблицы заголовка, Огоегэ, к которой она относится (безусловно, в таблице Огггегпега11э содержатся многие данные о заказе, но нет информации о том, кем сделан сам заказ). Аналогичным образом, не может отдельно использоваться и сама таблица Огоегэ, поскольку в ней отсутствует информация о том, чтя фактически входит в сам заказ (в частности, информация, позволяющая выявлять такие ситуации, что для заказа зарезервирован номер, но сама расшифровка заказа не введена).

Тем не менее из-за наличия жесткой связи между таблицами возникает та же основная проблема, что и при использовании связей "один к одному". Дело в том, что снова приходится решать, в какую таблицу необходимо вставить строку (строки) в первую очередь. И в данном случае в СУБД 8Я(. Бегтег единственный способ полностью реализовать эту связь состоит в реализации требования, чтобы операции вставки или удаления всех данных осуществлялись с помощью хранимых процедур. Нормализация и другие важные проблемы проектирования 295 Огвег ио[РК) Омвг Ввоз Соввппег Но 1717 1999 1717 1999 100 12000 102 171/ 1999 666 51 103 !717 1999 Огвег иоГРК) Цпе НемГРК) ипя Рвов тогв1 Рвов Рвано 100 144536 15 75 100 ОВ2400 27 4 108 100 ОЯ 2403 29 116 415436 750 750 101 62.

50 102 869200 12 84 102 8654 37 ЗН6250 15 15 102 32 32 103 869200 12 103 2Р5523 165 103 ЭХ9567 42 42 гзис 8З. Способ п)гвдставленил заказов и содвугзкимого заказов с помощью таблиц Окг2ока и Окс2акоосав1в Связь "один к нулю, одному или многим" Связь "один к нулю, одному или многим" — это еще одна разновидность производственной, обычной, повседневно применяемой связи с помощью внешнего ключа, которая, возможно, находит даже еще более широкое распространение, чем связь "один к одному или многим". Единственное заметное отличие в реализации этой связи по сравнению со связью "один к одному или многим" состоит в том, что допускается отсутствие значения в ссылающемся столбце (так называется столбец таблицы, на котором задано ограничение внешнего ключа); это означает, что из самого факта, что имеется строка в таблице на стороне "один", не обязательно следует наличие каких-либо экземпляров соответствующих ей строк в ссьглающейся таблице (таблице на стороне "нуль, один или многие").

Пример реализации такой связи можно обнаружить в базе данных 14огС71Н166 в виде связи между таблицами Бнрр11егя и Огпегя. Таблица Огг)егя позволяет следить за тем, какие поставщики занимаются доставкой заказанных товаров, но иногда товар забирает сам заказчик. Если же доставка осуществляется поставщиком, то необходимо обеспечить, чтобы в таблице япрр11егя имелась информация обо всех поставщиках, занимающихся поставками. С другой стороны, как показано на рис. 8.4, вполне возможна такая ситуация, что в таблице Огс7егя не найдут отражение данные обо всех без исключения поставщиках. 29б Глава 8 гис.

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

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

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

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