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

  • FilmlD FilmName YearMade

  • FilmlD FirstName LastName

  • FilmID FilmName YearMade FirstName LastName

  • О тличительная особенность INNER JOIN

  • Связующей таблицей

  • Ответы на билеты по дисциплине Базы данных. Базы данных. Вопросы к экзамену по дисциплине Базы данных


    Скачать 0.68 Mb.
    НазваниеВопросы к экзамену по дисциплине Базы данных
    АнкорОтветы на билеты по дисциплине Базы данных
    Дата07.01.2023
    Размер0.68 Mb.
    Формат файлаdoc
    Имя файлаБазы данных.doc
    ТипВопросы к экзамену
    #875067
    страница5 из 7
    1   2   3   4   5   6   7

    SELECT

    FilmlD

    FilmName

    YearMade

    1

    My Fair Lady

    1964

    Теперь перейдем к рассмотрению строки из таблицы с данными об актерах, на­зываемой Actors (таблица 2).

    Таблица 2. Одна строка с данными из таблицы Actors

    FilmlD

    FirstName

    LastName

    1

    Rex

    Harrison

    Конструкция JOIN позволяет создать одну строку из двух строк, находящихся в полностью отдельных таблицах (таблица 3).
    Таблица 3. Строка, полученная в результате соединения строк с данными из таблиц Films и Actors

    FilmID

    FilmName

    YearMade

    FirstName

    LastName

    1

    My Fair Lady

    1964

    Rex

    Harrison

    С помощью этой конструкции JOIN строки соединяются на основании СВЯЗИ "один к одному" (по крайней мере такое впечатление складывается на основании приведен­иях данных). Одна строка из таблицы Films соединяется с одной строкой из табли­цы Actors.

    Немного дополним условия этого примера и рассмотрим, что при этом произойдет. Введем еще одну строку в таблицу Actors (таблица 4).

    Таблица 4. Две строки с данными из таблицы Actors

    FilmlD

    FirstName

    LastName

    1

    Rex

    Harrison

    1

    Audrey

    Hepburn

    Теперь рассмотрим, что произойдет после соединения дополненной таблицы Actors с той же таблицей Films (содержащей только одну строку) (таблица 5).

    Таблица 5. Результаты соединения дополненной таблицы Actors с таблицей Films

    FilmID

    FilmName

    YearMade

    FirstName

    LastName

    1

    My Fair Lady

    1964

    Rex

    Harrison

    1

    My Fair Lady

    1964

    Audrey

    Hepburn

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

    О тличительная особенность INNER JOIN состоит в том, что она возвращает только те строки, которые были согласованны по всем полям.

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

    USE Universitet

    Select sp.SpecName, stud.StudentFirstName

    FROM Spec AS sp

    INNER JOIN Students AS stud

    ON stud.IdSpec = sp.IdSpec

    GO


    1. Перечислите общие свойства конструкции INNERJOINи конструкции WHERE.

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

    Рассмотрим несколько примеров того, как проявляется это свойство.

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

    SELECT DISTINCT с.CustomerID, с.CompanyName

    FROM Customers с

    INNER JOIN Orders о

    ON c.CustomerID = o.CustomerlD

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

    Теперь попытаемся получить информацию об общем количестве заказчиков и для этого вызовем на выполнение следующий простой запрос с агрегирующей функцией COUNT:
    SELECT COUNT (*) AS "No. Of Records" FROM Customers
    Применение конструкции INNER JOIN приводит к исключению строк в связи с тем, что не обнаруживаются соответству­ющие им строки в другой таблице, а использование конструкции WHERE приводит к исключению строк из возвращаемого набора, поскольку эти строки не соответствуют сданным критериям.

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

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


    authors

    titles

    titleauthor

    au id

    title id

    au id

    au lname

    Title

    title id

    au fname

    Type

    au ord

    Phone

    pub_id

    royaltyper

    address

    Price




    City

    Advance




    State

    Royalty




    Zip

    ytd_sales




    contract

    Notes pubdate



    1   2   3   4   5   6   7


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