Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Особенности построения структуры баз данных



Большинство используемых сейчас систем управления баз данных работают с реляционными базами данных, поэтому в дальнейшем мы будем рассматривать именно реляционную модель данных.

База данных (БД) – это электронное хранилище информации различного типа.

Система управления базами данных (СУБД) – это набор программ, способных непосредственно читать информацию из БД и записывать информацию в БД. СУБД предназначено для создания, удаления БД, создания, редактирования, удаления и заполнения таблиц БД.

БД обычно содержит информацию о некоторой предметной области, то есть области человеческой деятельности или области реального мира. В предметной области можно выделить сущности, описывающие типы объектов предметной области.

В качестве примера можно взять предметную область «Университет». В ней можно выделить сущности «Факультет», «Группа», «Студент» и т.д.

Для каждой сущности существует набор атрибутов, описывающих ее, по значениям которых объект предметной области можно отнести к той или иной сущности. Если взять в качестве примера сущность «Студент», то для ее описания можно выделить атрибуты «Имя», «Фамилия», «Возраст», «Номер зачетки», «Название группы» и т.д.

В реляционных БД единицей хранения информации является таблица – двумерная матрица, состоящая из строк и столбцов. В дисциплинах, связанных с БД, столбцы таблицы называются полями, а строки – записями.

Информация в таблице описывает конкретную сущность. Поля таблицы соответствуют атрибутам сущности, а записи – конкретным экземплярам, относящимся к сущности. Вернемся к нашему примеру. Для описания сущности «Студент» можно создать таблицу с именем студент и выделить в ней поля, соответствующие атрибутам сущности (Таблица 3.1).

 

Таблица 3.1

Пример таблицы «Студент»

Номер зачетки Имя Фамилия Возраст Название группы
Иван Иванов 41-ИТ
Петр Петров 51-АП
Андрей Сидоров 41-ИТ

 

Как видно из таблицы 3.1, записи таблицы соответствуют информации о конкретных студентах, т.е. о конкретных экземплярах сущности.

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

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

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

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

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

Таблица заполняется записями только после задания ее структуры. Формат записей задается структурой таблицы.

Если вернуться к таблице 3.1, то она имеет следующую структуру. Таблица имеет название Студент, в ней содержится пять полей. Поле «Номер зачетки» хранит числовую информацию; поля «Имя», «Фамилия», «Название группы» - символьную; поле «Возраст» - числовую.

3.2. Виды связей между таблицами

Между таблицами БД существуют связи. Рассмотрим два основных вида связей между таблицами БД: «один-ко-многим» и «многие-ко-многим».

Связь «один-ко-многим» в реляционных БД позволяет описать иерархию сущностей предметной области. Рассмотрим особенности связи на примере. Из предметной области «Университет» возьмем сущности «Студент» и «Группа». Между ними прослеживается конкретная связь: студент обычно учится в одной конкретной группе, в свою очередь, в группе учится много студентов (Конечно же, существуют исключения, но мы рассмотрим абстрактный пример, и не будем их касаться). Фактически это означает, что одной записи из таблицы «Группа» может соответствовать несколько записей таблицы «Студент».

Содержимое таблицы «Группа» разместим в таблице 3.2.

 

Таблица 3.2

Пример таблицы «Группа»

Номер группы Название
41-ЭИ
41-ИТ
51-АП

 

Схематически связь записей таблиц «Студент» и «Группа» можно выразить следующим образом.

Рис. 3.1. Схематическое изображение связи «один-ко-многим»

 

Из таблиц 3.1 и 3.2 видно, что в группе 41-ИТ учатся два студента. Каждый студент при этом учится в одной конкретной группе. Таблица «Группа», одной записи которой может соответствовать несколько записей таблицы «Студент», находится выше по иерархии, чем таблица «Студент». Если существует две связанные по принципу «один-ко-многим» таблицы, то та, что стоит выше по иерархии (одной записи которой может соответствовать несколько из связанной таблицы), называется родительской, а та, что ниже, - дочерней. Таблица «Группа» в данном случае родительская, а «Студент» - дочерняя.

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

Вернемся к нашему примеру. Изменим структуру таблицы Студент, учитывая специфику внешнего ключа. Исключим из таблицы Студент информацию о группе, оставив для связи только внешний ключ (таблица 3.3).

 

Таблица 3.3

Пример таблицы «Студент»

Номер зачетки Имя Фамилия Возраст Номер группы
Иван Иванов
Петр Петров
Андрей Сидоров

 

Будем работать с таблицами 3.2 и 3.3. В таблице Студент поле «Номер группы» является внешним ключом родительской таблицы «Группа». Пусть студент Иванов учится в группе 41-ИТ. В таблице «Группа» экземпляру с названием «41-ИТ» соответствует первичный ключ со значением «2». Поэтому значение внешнего ключа для студента Иванова устанавливается равным 2. Теперь по значению внешнего ключа можно, используя связь определить всю информацию о группе, в которой учится студент. Студент Петров учится в группе 51-АП. В таблице «Группа» экземпляру с названием «51-АП» соответствует первичный ключ со значением «3». Поэтому значение внешнего ключа для студента Петрова устанавливается равным 3.

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

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

Связь «многие-ко-многим» между двумя таблицами возникает, если конкретной записи из первой таблице может соответствовать несколько записей из второй, и конкретной записи из второй таблицы может соответствовать несколько записей из первой. Рассмотрим пример.

Выделим в предметной области «Университет» две сущности: «Студент» и «Предмет». Между ними прослеживается связь: студент изучает много предметов, а один и тот же предмет может изучаться многими студентами.

Общий вид таблицы «Предмет» представлен в таблице 3.4.

 

Таблица 3.4

Пример таблицы Предмет

Номер предмета Название
Математика
КСЕ
Экономическая теория

 

Пусть схематически связь записей таблиц «Студент» и «Предмет» можно выразить следующим образом.

 

Рис. 3.2. Схематическое изображение связи «многие-ко-многим»

 

В данном случае математику изучают три студента, КСЕ – два. Студенты Петров и Сидоров изучают по два предмета. Отразим эту связь в виде таблиц БД.

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

Для выражения связи «многие-ко-многим» между таблицами Студент и Предмет создадим еще одну таблицу «Изучает предмет». Ее структура представлена в таблице 3.5.

 

 

Таблица 3.5

Пример таблицы «Изучает предмет»

Номер зачетки Номер предмета

 

Таблица, созданная для выражения связи «многие-ко-многим», может иметь собственные поля, если этого требует предметная область, но в данном случае таблица «Изучает предмет» необходима только для связи таблиц Студент и предмет и не имеет собственных полей. Поле «Номер зачетки» является внешним ключом таблицы Студент, а поле «Номер предмета» является внешним ключом таблицы Предмет. Оба поля входят в первичный ключ, так как связи «один-ко-многим», где родительскими таблицами выступают Студент и Предмет, являются идентифицирующими. В таблице 3.5 реализованы все связи рисунка 3.2.

Используем таблицы 3.3, 3.4 и 3.5. Иванов Иван изучает математику. Записи таблицы Студент с фамилией и именем Иванов Иван соответствует значение первичного ключа 567238, а записи таблицы Предмет с названием Математика соответствует значение первичного ключа 1. Эти два значения связаны между собой и образуют первую запись таблицы «Изучает предмет». По этой записи можно без труда определить всю информацию о студенте и предмете, который он изучает, через первичные ключи таблиц. Петров Петр изучает КСЕ. Записи таблицы Студент с фамилией и именем Петров Петр соответствует значение первичного ключа 652664, а записи таблицы Предмет с названием КСЕ соответствует значение первичного ключа 2. Эти два значения связаны между собой и образуют третью запись таблицы «Изучает предмет».

 


Поделиться:



Последнее изменение этой страницы: 2017-04-12; Просмотров: 469; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.025 с.)
Главная | Случайная страница | Обратная связь