Что называют записями базы данных
Ответы Основные понятия база данных и информационная система
Задание 1. Что такое база данных?
Задание 2. В чем различие между фактографическими и документальными БД?
Задание 3. Что такое распределенная БД?
Задание 4. Что такое информационная система? Приведите примеры информационных систем.
Задание 5. Что вы знаете о реляционной БД?
Задание 6. Что такое запись, поле? Какую информацию они содержат?
Задание 7. Определите имена полей в таблицах «Домашняя библиотека», «Погода», «Успеваемость», «Факультативы».
Поля «Домашняя библиотека»: Номер; Автор; Название; Год; Полка
Поля «Погода»: День; Осадки; Температура С; Давление, мм рт. ст.; Влажность, %
Поля «Успеваемость»: Ученик; Русский; Алгебра; Химия; Физика; История; Музыка
Поля «Факультативы»: Фамилия; Геология; Цветоводство; Танцы
Задание 8. Что такое первичный ключ БД? Какие бывают ключи?
Задание 9. Назовите объекты, сведения о которых содержат записи баз данных «Погода», «Успеваемость», «Факультативы». Определите ключи записей в этих БД.
Таблица «Погода»
Первичный ключ: День. Отдельный объект БД: Погода в определенную дату.
Таблица «Успеваемость»
Первичный ключ: Ученик. Отдельный объект БД: Успеваемость ученика.
Таблица «Факультативы»
Первичный ключ: Фамилия. Отдельный объект БД: Наличие факультативов у учеников.
Информационные технологии. 10 класс (Базовый уровень)
§ 1. Понятие базы данных. Система управления базами данных (СУБД)
1.1. Базы данных. Поле. Запись
Основой современных информационных технологий являются данные. Практически все информационные системы в той или иной степени связаны с функциями долговременного хранения и обработки данных. Информация является фактором, определяющим эффективность любой сферы деятельности.
Данные, предназначенные для компьютерной обработки, целесообразно структурировать, т. е. организовывать определенным образом. Именно структурирование позволяет пользователю оптимизировать работу с данными (сократить время поиска, обеспечить эффективное хранение, исключить ошибки при обработке).
База данных (БД) — совокупность взаимосвязанных и организованных определенным образом данных.
Базы данных можно классифицировать исходя из способов организации их хранения и обработки:
1. Иерархическая. Такую модель можно изобразить в виде дерева, состоящего из объектов различных уровней.
2. Сетевая. Является обобщением иерархической, т. е. каждый элемент вышестоящего уровня может быть связан с любыми элементами следующего уровня.
3. Реляционная. В такой модели данные организованы в виде таблиц, между которыми установлены связи.
Рассмотрим реляционные БД, как наибольший распространенный в сегодняшнее время.
Таблицы состоят из строк и столбцов. В таблицах баз данных — это записи и поля.
Запись — строка таблицы базы данных, содержащая данные об одном объекте.
В таблице из примера 1.1 пять записей и каждая запись содержит данные об определенном киносеансе.
Поле — столбец таблицы базы данных, в котором указываются значения определенного свойства объектов базы данных.
В таблице из примера 1.1 (п. 3) четыре поля: «Кинотеатр», «Фильм», «Время», «Стоимость».
Взаимодействие с базами данных лежит в основе функционирования многих ресурсов в Интернете.
Электронный школьный журнал работает с базой данных, содержащей информацию о педагогическом коллективе учреждения образования, об учащихся, классах, учебных предметах, отметках и т. д.
Доступ к базе данных необходим при оплате товаров в супермаркете, когда кассир считывает штрих-код с покупок, а также при поиске товаров в интернет-магазинах.
При посещении Национальной библиотеки обычно приходится обращаться к базе данных, содержащей сведения обо всех книгах, имеющихся в этой библиотеке, о ее читателях, заявках на бронирование книг и т. д.
Пример 1.1. Классификация баз данных.
3. Таблица реляционной БД.
Франк Кодд (23 августа 1923 г. — 18 апреля 2003 г.) — британский ученый, труды которого заложили основы теории реляционных баз данных. Работая в компании IBM, он установил правила, определяющие базу данных как реляционную.
Введение в базы данных
1.1.3 Записи, типы данных, наборы записей
Данные хранятся обычно в виде записей. Пример простой записи:
Заметим, что для работы с ней необходимо разобраться с семантикой, то есть с системой смыслов, связанных с этой записью. Это запись чего? Что такое «ACCOUNTING» Может быть название книги об учёте? A «NEW YORK» —это место её издания? А что тогда обозначает число 10? В действительности имелось в виду, что приведенная запись входит в набор записей с именем «ОТДЕЛЫ» (рисунок 1.1). Первое поле записи —номер отдела, второе поле — это название отдела, а третье обозначает город, в котором отдел находится.
В примере, приведённом выше, поле «номер отдела» — ключ. Если вам кажется, что ключ можно было выбрать и по-другому, то вы правы.
Нетрудно догадаться, что схемы и типы записей нужны для создания структур, например, для объединения записей в некоторые наборы, может быть как-то связанные между собой.
Можно говорить о типе записей, но схема и тип не синонимы. Схема отображает структуру записи, а тип кроме структуры определяет ещё множество допустимых значений и связанные с этим множеством наборы операций и отношений.
Если все поля, пригодные в качестве ключевых, могут изменяться, либо если ключ содержит слишком много полей или слишком длинен, вводят суррогатный ключ в виде дополнительного поля, не описывающего никакого свойства объекта, представляемого записью.
Заметим, что в базах, использующих объектную идеологию, записи идентифицируются не полями записи, а двумя указателями. Один позволяет найти запись на диске, а второй — в оперативной памяти.
Почему мы говорим, что любая запись образуется иерархией полей? Даже простая запись, приведенная выше, представляется деревом глубины 1 (рисунок 1.1). Для записей со сложной структурой это тем более справедливо. В качестве примера такой структуры рассмотрим запись «сотрудник», с составным полем «адрес» :
Дерево схемы этой записи изображено на рисунке 1.2.
На примере записи «адрес» рассмотрим проблему стандартизации схем. По правилам Почты России в запись адреса физического лица должны входить следующие поля:
Возможно, приведенная в примере форма записи в настоящее время устраивает пользователей базы. Но может быть следует подумать о том, не придётся ли в дальнейшем изменять схему, например, из-за того, что появятся филиалы в других государствах? А нужно ли фамилию, имя и отчество записывать в одном поле? А как быть с теми, у кого нет отчества? И вообще, как записать Ламарка, которого, как известно, при жизни именовали Жан Батист Пьер Антуан де Моне шевалье де Ламарк?
Единственного правильного решения нет. Можно только посоветовать более точно определять границы предметной области, руководствоваться интересами пользователей и стандартами, пытаться прогнозировать возможные изменения моделируемого бизнеса. Конечно, следует знакомиться с конкурирующими разработками и, вообще, со всеми материалами, которые могут быть полезны для решения вашей задачи.
Помните, что в базах могут храниться данные, которые не удобно или невозможно представлять записями. Это картографические, мультимедийные и другие плохо структурированные данные. Типичные примеры: фотографии, аудио- и видеозаписи.
Перейдем к типам данных. Уже упоминалось, что типы определяют структуру данных, множество допустимых значений, заданных некоторым набором ограничений, и связанные с этим множеством наборы операций и отношений. Обязательно должно быть определено отношение эквивалентности. Полезно иметь отношения порядка. Разделим типы данных на три группы:
Простые, иначе атомарные или скалярные, типы данных не обладают внутренней структурой. К простым типам в базах данных относятся, как минимум:
Обратите внимание на то, что термин «простой тип» означает только, что в рамках базы невозможно работать с какими-то частями данных этих типов. Например, нельзя извлечь первые пять символов строки. Отсутствие внутренней структуры, то есть действительная простота, не предполагается. Так, числовой тип может хранить номер банковского счета, содержащий несколько полей с определёнными свойствами. Но для работы с этими полями необходимо использовать какие-то дополнительные средства вне базы данных.
Интервальные типы выделены из-за двух своих особенностей. Само название «интервальный» дано потому, что операции вроде разности дают результат, выводящий за рамки базисного типа. Так, разность между двумя датами, например, «30 декабря» и «29 декабря», есть один день. Это не дата, а число. Вторая особенность в том, что некоторые операции над данными интервальных типов смысла не имеют. Что означала бы сумма тех же дат, 30 и 29 декабря?
Перечислимыми называют типы, позволяющие пользователю задать набор допустимых значений.
Нетрудно заметить, что денежный и интервальные, а отчасти и перечислимые типы появились потому, что базы данных ориентированы на бизнес в классическом его понимании, как деятельности направленной на извлечение прибыли.
Структурированные типы данных образуются из составляющих компонентов, которые, в свою очередь, могут быть структурированы.
Домен можно считать уточнением типа данных. Домен определяет подмножество значений некоторого типа данных, имеющих определенный смысл, дополнительный к смыслу данных, определённых типом.
Домен должен иметь уникальное в пределах базы данных имя. Определяется он на некотором типе данных или на другом домене. Домен характеризуется условием, выделяющим подмножество данных описываемого домена.
И последнее замечание по поводу используемой терминологии. В базах данных сделано так много и такого разного, что очень трудно выбрать термин, который ранее уже не был использован, причём в нескольких, иногда существенно различных, смыслах Набор записей — одно из ключевых понятий старого стандарта сетевых баз данных CODASYL. У нас набор записей понимается в самом широком смысле как любой набор однотипных записей, образующий таблицу или используемый для описания узла сетевой модели данных и т.п.
Что такое База Данных (БД)
База данных — это место для хранения данных. Используется в том числе в клиент-серверной архитектуре. Это все интернет-магазины, сайты кинотеатров или авиабилетов. Вы делаете заказ, а система сохраняет ваши данные в базе.
В этот статье я на простых примерах расскажу, что такое база данных и как она выглядит. А потом поясню некоторые термины из конкретной (реляционной) базы. Те, с которыми вы почти наверняка столкнетесь на работе.
Статья рассчитана на начинающих тестировщиков или аналитиков, то есть тех, кто будет работать с базой, но не на супер-глубоком уровне. Она для тех, кто только входит в мир ИТ, и многого не знает. Она объясняет, что это за звено в клиент-серверной архитектуре такое, и зачем оно нужно.
Содержание
Что такое база данных
База данных — хранилище, куда приложение складывает свои данные. Если приложение небольшое, отдельная база не нужна. Но потом это становится удобнее и выгоднее с точки зрения памяти.
Катя решила открыть свой магазинчик. Она нашла хорошую марку обуви, которую «днем с огнем» не сыскать в ее городе. Заказала оптовую партию и стала потихоньку распродавать через знакомых. Пришлось освободить половину шкафа под коробки, но вроде всё поместилось.
Обувь хорошая, в розницу заказывать в других местах невыгодно — и вот уже у Кати есть постоянные клиенты, которые приводят друзей. Как только какая-то пара заканчивается, Катя делает новый заказ.
Но покупатели хотят новинок, разных размеров. Да и самих покупателей становится все больше и больше. В шкаф коробки уже не влезают!
Теперь, если покупатель просит определенную пару, Катьке сложно её найти. Пока коробок было мало, она помнила наизусть, где что лежит. А теперь уже нет, да и все попытки организовать систему провалились. Места мало, да и детки любят с коробками поиграть.
Тогда Катька решила арендовать складское помещение. И вот теперь красота! Не надо теснить своих домашних, дома чисто и свободно! И на складе место есть, появилась система — тут босоножки, тут сапоги.
Чем больше объемы производства, тем больше нужно места. Если в начале пути склад не нужен, всё поместится дома, то потом это будет оправданно.
То же самое и в приложениях. Если приложение маленькое, то все данные можно хранить в памяти. Но учтите, что это память на вашем компьютере, вашем телефоне. И чем больше данных туда пихать, тем медленнее будет работать программа.
Место в памяти ограничено. Поэтому когда данных много, их нужно куда-то сложить. Можно писать в файлики, а можно сохранять информацию в базу данных (сокращенно БД). Выбор за вами. А точнее, за вашим разработчиком.
Как она выглядит
Да примерно как excel-табличка! Есть колонки с заголовками, и информация внутри:
Это называется реляционная база данных — набор таблиц, хранящихся в одном пространстве.
Что за пространство? Ну вот представьте, что вы храните все данные в excel. Можно запихать всю-всю-всю информацию в одну огро-о-о-о-мную таблицу, но это неудобно. Обычно табличек несколько: тут информация по клиентам, там по заказам, а тут по адресам. Эти таблицы удобно хранить в одном месте, поэтому кладем их в отдельную папочку:
Так вот пространство внутри базы данных — это та же самая папочка в винде. Место, куда мы сложили свои таблички, чтобы они все были в одном месте.
Пример базы Oracle
Цель та же — выделить отдельное место, чтобы у вас не была одна большая свалка:
заходишь в папку в винде → видишь файлики только из этой папки
заходишь в пространство → видишь только те таблицы, которые в нем есть
Хранение данных в виде табличек — это не единственно возможный вариант. Вот вам для примера запись из таблицы в системе Users. Там используется MongoDB база данных, она не реляционная. Поэтому вместо таблички «словно в excel» каждая запись хранится в виде объекта, вот так:
А еще есть файловые базы — когда у вас вся информация хранится в файликах. Да-да, простых текстовых файликах!
Почитать о разных видах баз данных можно в википедии. Я не буду в этой статье углубляться в эту тему, потому что моя задача — объяснить «что это вообще такое» для ребят, которые базу в глаза не видели. А на работе они скорее всего столкнутся именно с реляционной базой данных, поэтому о ней и речь.
Как получить информацию из базы
Нужно записать свой запрос в понятном для базы виде — на SQL. SQL (Structured Query Language) — язык общения с базой данных. В нем есть ключевые слова, которые помогут вам сделать выборку:
select — выбери мне такие-то колонки.
from — из такой-то таблицы базы.
where — такую-то информацию.
Например, я хочу получить информацию по клиенту «Назина Ольга». Составляю в уме ТЗ:
В дословном переводе:
Комментарии в Oracle/PLSQL — мой перевод остается работающим запросом, потому что я убрала «лишнее» в комментарии
Если бы у меня была не база данных, а простые excel-файлики, то же действие было бы:
Открыть файл с нужными данными (clients)
Поставить фильтр на колонку «ФИО» — «Назина Ольга».
То есть нам в любом случае надо знать название таблицы, где лежат данные, и название колонки, по которой фильтруем. Это не что-то страшное, что есть только в базе данных. То же самое есть в простом экселе.
Бывают запросы и сложнее — когда надо достать данные не из одной таблицы, а из разных. В базе это будет выглядеть даже лучше, чем в эксельке. В экселе вам нужно открыть 1-2-3 таблицы и смотреть в каждую. Неудобно.
А в базе данных вы внутри запроса SQL указываете, какие колонки из каких таблиц вам нужны. И результат запроса их отрисовывает. Скажем, мы хотим увидеть заказ, который сделал клиент, ФИО клиента, и его номер телефона. И всё это в разных таблицах! А мы написали запрос и увидели то, что нам надо:
id_order
order (таблица order)
fio (таблица client)
phone (таблица contacts)
И пусть в таблице клиентов у нас будет 30 колонок, а в таблице заказов 50, в результате выборки мы видим ровно 4 запрошенные. Удобно, ничего лишнего!
Конечно, написать такой запрос будет немного сложнее обычного селекта. Это уже select join, почитать о нем можно тут. И я рекомендую вам его изучить, потому что он входит в «базовое знание sql», которое требуется на собеседованиях.
Результаты выборки можно группировать, сортировать — это следующий уровень сложности. См раздел «статьи и книги по теме» для получения большей информации.
Как связать данные между собой
Вот например, у нас есть интернет-магазин по доставке пиццы. Так выглядит его база данных:
В таблице «client» лежат данные по клиентам: ФИО, пол, дата рождения и т.д.
last_name
first_name
birthdate
В таблице «orders» лежат данные по заказам. Что заказали (пиццу, суши, роллы), когда, насколько довольны доставкой?
order
addr
date
time
Роллы «Филадельфия» и «Канада»
Пицца 35 см, роллы комбо 1
Пицца с сосиками по краям
Комбо набор 3, обед №4
Но как понять, где чей был заказ? Сколько раз заказывал Вася, а сколько Алина?
Тут есть несколько вариантов:
1. Запихать все данные в одну таблицу: тут и заказы, и информация по клиентам. В целом удобно, открыл табличку и сразу видишь — ага, это Васин заказ, а это Машин.
Таблица все растет и растет, в итоге получается просто огромной! А когда данных много, легкость чтения пропадает, придется листать до нужной колонки.
Поиск будет работать медленнее. Чем меньше информации в таблице, тем быстрее поиск. Когда у нас много строк, количество колонок становится существенным.
Много дублей — один человек может сделать хоть сотню заказов. И вся информация по нему будет продублирована сто раз. Неоптимальненько!
Чтобы избежать дублей, таблицы принято разделять:
Новые объекты отдельно
Но надо при этом их как-то связать между собой, мы ведь всё еще хотим знать, чей конкретно был заказ. Для связи таблиц используется foreign key, внешний ключ.
Нам надо у заказа сделать отметку о клиенте. Значит, таблица «orders» будет ссылаться на таблицу «clients». Ключ можно поставить на любую колонку таблицы (в некоторых базах колонка должна быть уникальной, сначала её нужно такой указать). Какую бы выбрать?
Можно ссылаться на имя. А что, миленько, в таблице заказов будем сразу имя видеть! Но минуточку. А если у нас два клиента Ивана? Или три Маши? Десять Саш. Ну вы поняли =) И как тогда разобраться, где какой клиент? Не подходит!
Можно вешать foreign key на несколько колонок. Например, на фамилию + имя, или фамилию + имя + отчество. Но ведь и ФИО бывают неуникальные! Что тогда? Можно добавить в связку дату рождения. Тогда шанс ошибиться будет минимален, хотя и такие ребята существуют. И чем больше клиентов у вас будет, тем больше шанс встретить дубликат.
А можно не усложнять! Вместо того, чтобы делать внешний ключ на 10 колонок, лучше создать в таблице клиентов primary key, первичный ключ. Первичный ключ отвечает за то, чтобы каждое значение в поле было уникальным, никаких дублей. При попытке добавить в таблицу запись с неуникальным первичным ключом получаешь ошибку:
Здесь ключ — «id_order»
Вот на него и нужно ссылаться! Обычно таким ключом является ID, идентификатор записи. Его можно сделать автоинкрементальным — это значит, что он генерируется сам по алгоритму «прошлое значение + 1».
Например, у нас гостиница для котиков. Это когда хозяева едут в отпуск, а котика оставить не с кем — оставляем в гостинице!
Что называют записями базы данных
Базы данных представляют собой информационные модели, содержащие данные об объектах и их свойствах. Базы данных хранят информацию о группах объектов с одинаковым набором свойств.
Например, база данных «Записная книжка» хранит информацию о людях, каждый из которых имеет фамилию, имя, телефон и так далее. Библиотечный каталог хранит информацию о книгах, каждая из которых имеет название, автора, год издания и так далее.
Существует несколько различных структур информационных моделей и соответственно различных типов баз данных: табличные, иерархические и сетевые.
Табличные базы данных
Столбцы такой таблицы называют полями; каждое поле характеризуется своим именем (именем соответствующего свойства) и типом данных, представляющих значения данного свойства.
Строки таблицы являются записями об объекте; эти записи разбиты на поля столбцами таблицы, поэтому каждая запись представляет собой набор значений, содержащихся в полях.
Каждая таблица должна содержать, по крайней мере, одно ключевое поле, содержимое которого уникально для каждой записи в этой таблице. Ключевое поле позволяет однозначно идентифицировать каждую запись в таблице.
В качестве ключевого поля чаще всего используют поле, содержащее тип данных счетчик. Однако иногда удобнее в качестве ключевого поля таблицы использовать другие поля: код товара, инвентарный номер и т. п.
При этом каждое поле обладает определенным набором свойств. Например, для поля Оперативная память задан формат данных целое число.
Таблица 3.1. Табличная база данных | ||||||||||||||||
|
1. В чем заключается разница между записью и полем в табличной базе данных?
2. Поля каких типов полей могут присутствовать в базе данных?
3. Чем отличается ключевое поле от остальных полей?