Реклама

  •  

    В этой статье рассматривается понятие "связь", весьма употребительное в СУБД Access. Сле

     

    Обращает на себя внимание тот факт, что понятие связи, являющееся одним из центральных в Access, по сути дела, нигде не определяется. Вот что написано в учебнике Ю. Шафрина: "Объект, атрибут и связь — фундаментальные понятия ИС" ( [9], стр. 531). Если объекту и атрибуту в дальнейшем в этом учебнике даются определения (хотя, на наш взгляд, и не очень ловко), то определения связи там вообще нет. Как же

    так? Ведь это — одно из фундаментальных (по мнению автора) понятий, а их всего-то три!

    В учебнике под редакцией проф. Н. Макаровой раздел, посвященный базам данных, начинается обещанием научить школьника "связывать разные таблицы данных " ( [7], стр. 201). Правда, авторы тут же навсегда забывают о своем обещании. Что такое связь, так и остается неразрешенной загадкой.

    В учебнике С. Симоновича и др. который представляется нам наиболее приемлемым, связи таблиц уделяется большое внимание. В частности, там говорится: "Базы данных, имеющие связанные таблицы, называются также реляционными базами данных " ( [8], стр. 98). Стало быть, по мнению авторов, связь — непременный (и даже определяющий!) признак реляционности. Однако хотя в учебнике подробно расписано, как устанавливается связь, но что такое связь, там не объясняется. Конечно, это относится не только к связям и не только к школьным

    учебникам. К сожалению, это вообще стиль "пользовательской" литературы. Там обычно объясняется, как с данным понятием работать (т. е. какие кнопки в каком порядке нажимать), но что это понятие означает, либо вообще не говорится, либо поясняется крайне невнятно.

    В частности, Help Access так определяет связь: "Отношение (связь), установленное между общими полями (столбцами) двух таблиц. Существуют отношения "один к одному", "многие ко многим" и "один ко многим ". Можно ли отсюда понять, что такое связь?

    Маловероятно. В справочнике [2] связь определяется так: "Соединение, данных двух таблиц, с помощью общего поля (или нескольких полей) — идентификатора записи " (стр. 393). Это определение поясняется следующим образом: "Когда между таблицами устанавливается связь, величины одной таблицы ставятся в соответствие величинам из другой таблицы. Чтобы создать связь, в одной или обеих таблицах должно быть поле, принимающее уникальные значения во всех записях. В родительской таблице, поле обычно индексировано (как правило, оно является ключевым полем), и в соответствие ему ставится поле дочерней таблицы (оно называется внешним ключом) " (стр. 88).

    В литературе по модели "Сущность-Связь" можно найти определения такого рода: "Связь — это графически изображаемая ассоциация, устанавливаемая между двумя разными сущностями. Эта ассоциация всегда является бинарной и может существовать между двумя разными сущностями или между сущностью и ею же самой (рекурсивная связь). В любой связи выделяются два конца (в соответствии с существующей парой связываемых сущностей), на каждом из которых указывается имя конца связи, степень конца связи (сколько экземпляров данной сущности связывается), обязательность связи (т. е. любой ли экземпляр данной сущности должен участвовать в данной связи) " ([4], стр. 121). На наш взгляд, такие определения мало что дают в понимании межтабличной связи в Access.

    Между тем связь — это не такое уж хитрое понятие, оно вполне доступно среднему школьнику. Правда, чтобы объяснить его, в школьный курс информатики (а возможно, и математики) нужно ввести ряд новых идей. Впрочем, идеи эти давно стучатся в дверь. И нужны они, конечно, не только для объяснения понятия связи. Повторяем, что связь — это только пример.

    Итак, что же это за идеи?

    Для чего нужна СУБД

    Начнем с одного простого, но важного вопроса: для чего нужны базы данных? Как это ни странно, но при всем внимании, уделяемом базам данных в "пользовательских курсах, этот вопрос остается как бы в тени. Между тем ответ на него ясен и прост: основная функция БД — выдавать ответы на поступающие запросы 2 .

    Если СУБД не умеет отвечать на запросы, то все ее остальные функции бессмысленны. (Отметим в скоб ках, что в некоторых пользовательских курсах поня­тие запроса вообще не рассматривается (см. например, [7] ). Как можно изучать СУБД, не зная, что такое запрос, — загадка.)

    Как же вычисляется ответ на запрос в современных СУБД? Согласно реляционной парадигме, на которой основано подавляющее большинство систем, все данные представляются в виде отношений 3 Формально отношение определяется как множество кортежей 4. Отношение принято изображать в виде таблицы, в которой кортежи — ее строки. Отношения встречаются школьнику буквально на каждом шагу. И осознание того факта, что это обыкновенные таблицы, интересно с точки зрения развития общей культуры и мировоззрения школьника. (Мы советуем учителю не пожалеть время на то, чтобы ученики описали в виде таблиц отношения из самых разных сфер окружающего мира.)

    Итак, данные представляются в виде отношений. Это относится и к исходным данным, которые хранятся в машине, и к данным, выдаваемым в ответ на запрос. Теперь мы можем уточнить наше понимание основной функции БД: выдача ответа на запрос происходит путем переработки исходных отношений в результирующие от­ношения. В качестве примера рассмотрим базу данных Школа. Пусть в ней хранятся две исходные таблицы:

     



  • На главную
     
    [© 2014 Все о связи