Содержание

Лабораторная работа №1

Создание баз данных в среде MS SQL Server 2005

NO:user
READ:@ALL
EDIT:@ALL

Цели:

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

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

Результатом лабораторной работы будет создание реляционной базы данных на основе MS SQL Server 2005.

В реляционной базе данных данные представлены в виде собрания таблиц. Таблица состоит из определенного числа столбцов (полей) и произвольного числа строк (записей).

Планируемая база данных будет представлять собой информационное хранилище данных об успеваемости студентов и состоять из следующих таблиц:

- Speciality (специальность)
- Course (курс)
- Group (группа)
- Discipline (дисциплина)
- Account (тип отчетности)
- Mark (отметка)
- Status (академический статус студента)
- Position (должность)
- People (люди)
- Student (студент)
- Teacher (преподаватель)
- SemesterResults (результаты сессии, семестра)

Структура данных таблиц приведена в Приложении.

1. Начало работы в Microsoft SQL Server Management Studio

Для создания баз данных используем среду Microsoft SQL Server Management Studio. На запрос соединения с сервером выбираем (рис. 1):

Тип сервера: Компонент Database Engine

Имя сервера: SQL-MS.

Под таким именем в домене fizmat.vspu.ru. доступна машина, на которой установлены серверные компоненты MS SQL Server 2005. Можно попробовать выбрать сервер из выпадающего списка серверов. Можно также обратиться к этой машине по IP-адресу 192.168.10.152 из локальной сети.

Проверка подлинности: Проверка подлинности SQL Server.

Такая настройка позволяет создавать пользователей данного экземпляра SQL Server независимо от компьютера, с которого производится вход.

Имя входа: studentMBS21.

Пароль: student.

Рисунок 1. Окно входа в Microsoft SQL Server Management Studio 2005

Примечание. Пользователь studentMBS21 обладает большими полномочиями на этом сервере, поэтому пользоваться им надо очень аккуратно. Под этим пользователем мы создадим базу данных, а заполнять её и производить поиск по ней мы будем под другими пользователями. Предпочтительнее всего использовать свою учетную запись в домене fizmat.vspu.ru. В этом случае надо выбирать проверку подлинности Windows.

Теперь нажимаем кнопку «Параметры» и выбираем (рис. 2):

Соединение с базой данных → Обзор сервера… → Пользовательские базы данных → trial_base.

Сетевой протокол → TCP/IP

Нажимаем кнопку «Соединить».

Рисунок 2. Окно входа в Microsoft SQL Server Management Studio 2005 (вкладка Параметры)

Примечание. База данных trial_base является базой данной по умолчанию для пользователя studentMBS21, она была создана при регистрации этого пользователя. В случае, когда права доступа пользователя не ограничены (как в рассматриваемом случае), вкладку Параметры можно не открывать. Если же пользователь имеет доступ только к определенным базам данных, при подключении к серверу нужно одну из этих баз указывать.

После успешного соединения с базой данных на экране видим следующую картинку (рис. 3):

Рисунок 3. Подключение к SQL - серверу установлено

Среда MS SQL Management Studio предоставляет удобный инструментарий для создания, редактирования, заполнения баз данных. Но настоящие профессионалы в своей работе редко пользуются этой средой, а для выполнения своих задач используют SQL-запросы. Мы будем пользоваться, когда это удобно и наглядно, графическим режимом, но основной упор будем делать на освоении базы языка SQL.

2. Создание базы данных в среде Microsoft SQL Server Management Studio

В разделе «Базы данных» правой кнопкой выбираем «Создать базу данных…» (рис. 4). Назовем базу данных по индексу группы – mbs21. Владельцем базы данных назначим пользователя, под именем которого был произведен вход – studentMBS21. В разделе «Параметры» выбираем тип сортировки Cyrillic_General_BIN (для примера), нажимаем ОК.

Рисунок 4. Создание базы данных

В разделе «Базы данных» Обозревателя объектов появилась вновь созданная mbs21 (проверьте!):

Рисунок 5. Обозреватель объектов

3. Создание таблиц базы данных в среде Microsoft SQL Server Management Studio

Начнем с создания таблицы Speciality. Структура таблицы приведена ниже:

Имя поля (столбца) Содержание Тип данных Возможность содержать NULL
Num Первичный ключ int нет
Name Название специальности varchar(60) нет

В реляционных базах данных первичный ключ используется как уникальный идентификатор записи. Это поле является обязательным, оно используется для связи таблиц по внешним ключам (примеры такого связывания будут рассмотрены далее). Первичный ключ должен иметь целочисленный тип (в данном случае - int). Во втором поле будет храниться название специальности - некоторая строка, поэтому мы выбираем для этого поля тип varchar(60). Число в скобках означает максимальное число символов в строке. Детальную информацию об этих типах можно посмотреть в справке.

Простейшим образом можно создавать таблицы средствами MS SQL Server Management Studio (правая кнопка мыши на заголовке «Таблицы» > Создать таблицу.). Получаем следующее:

Рисунок 6. Создание таблицы

Вводим имя первого столбца Num (первичный ключ – в том столбце хранится номер записи), выбираем из выпадающего списка тип данных int. Первичный ключ не может быть пустым, поэтому и оставляем неотмеченным поле «Разрешить значения null». Затем аналогичным образом вводим имя второго столбца, задаем тип, запрещаем полю иметь значение null. Таблица принимает следующий вид:

Рисунок 7.

Теперь необходимо указать, что поле Num будет являться первичным ключом. Правой кнопкой мыши щелкаем по этому полю и выбираем «Задать первичный ключ»:

Рисунок 8.

Сохраняем таблицу под именем Speciality (после этого таблица должна появиться в обозревателе объектов). Теперь можно перейти к заполнению этой таблицы (для этого нужно в обозревателе объектов выбрать эту таблицу и в контекстном меню нажать «Открыть таблицу»):

Рисунок 9.

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

Рисунок 10. Определение свойств идентифицирующего столбца

4. Создание таблиц базы данных с помощью SQL-запроса

Создание таблиц в графическом режиме, безусловно, удобно, однако не универсально. При использовании других средств разработки баз данных (например, IBM DB2) придется привыкать к новым приемам работы. Использование конструкций языка SQL позволяет работать с базами данных, исходя из единого подхода, в любой среде управления базами данных.

Выберите на панели инструментов «Создать запрос»:

Рисунок 11.

Создадим новую базу данных запросом. Напишем

CREATE DATABASE mbs21_query

и нажмем F5. В обозревателе объектов должна появиться новая база (если сразу не появилась, то надо выделить мышью раздел «Базы данных» и в контекстном меню выбрать «Обновить»).

Теперь создадим таблицу Speciality. Упрощенный синтаксис создания таблиц следующий:

CREATE TABLE <имя таблицы> (
    <имя столбца 1> <тип данных> [NOT NULL] [DEFAULT <значение по умолчанию>],
    <имя столбца 2> <тип данных> [NOT NULL] [DEFAULT <значение по умолчанию>],
    ...
)

Введем новый запрос:

/* создание таблицы Специальность*/
USE mbs21_query                                   -- определяем базу данных, в которую входит таблица
CREATE  TABLE  Speciality( 
    Num  INT IDENTITY(1,1) PRIMARY KEY NOT NULL, -- первичный ключ 
    NameSpec VARCHAR(60)                          -- название специальности
)

В обозревателе объектов видим, что таблица действительно создана. Файл с SQL-запросом сохраняем в своей папке (в конце работы необходимо показать запросы, которые были выполнены, преподавателю). Слово IDENTITY(1,1) добавлено, чтобы поле первичного ключа Num автоматически нумеровалось начиная с единицы (фактически, эта конструкция определяет спецификацию идентифицирующего столбца).

Таким же образом необходимо создать остальные таблицы. Рассмотрим таблицу Course.

Таблица Course (курс)

Имя поля (столбца) Содержание Тип данных Возможность содержать NULL
Num Первичный ключ int нет
Name Название специальности varchar(60) нет
YearEntry Год поступления int нет
YearFinal Год выпуска int да
Speciality Специальность (внешний ключ ссылается на первичный ключ таблицы Speciality) int нет

Эта таблица содержит поле Speciality, которое ссылается на первичный ключ таблицы Speciality. Чтобы создать такую таблицу, необходимо выполнить запрос:

/* создание таблицы Курс */
USE mbs21_query                                  -- определяем базу данных, в которую входит таблица
CREATE  TABLE  Course( 
    Num  INT IDENTITY(1,1) PRIMARY KEY NOT NULL, -- первичный ключ
    YearEntry INT NOT NULL,                      -- год поступления
    YearFinal INT,                               -- год окончания
    Speciality INT FOREIGN KEY REFERENCES Speciality(Num) -- специальность,
    -- ссылка по внешнему ключу на поле Num таблицы Speciality
)

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

Задание. Создайте все остальные таблицы, указанные в Приложении, используя SQL – запросы.

Приложение. Структура данных

Таблица Speciality (специальность)

Имя поля (столбца) Содержание Тип данных Возможность содержать NULL
Num Первичный ключ int Нет
Name Название varchar(60) Нет

Таблица Course (курс)

Имя поля (столбца) Содержание Тип данных Возможность содержать NULL
Num Первичный ключ int нет
Name Название специальности varchar(60) нет
YearEntry Год поступления int нет
YearFinal Год выпуска int да
Speciality Специальность (внешний ключ ссылается на первичный ключ таблицы Speciality) int нет

Таблица Group (группа)

Имя поля (столбца) Содержание Тип данных Возможность содержать NULL
Num Первичный ключ int нет
Name Название специальности varchar(60) нет
Course Курс (внешний ключ ссылается на первичный ключ таблицы Course ) int нет

Таблица Discipline (дисциплина)

Имя поля (столбца) Содержание Тип данных Возможность содержать NULL
Num Первичный ключ int Нет
Name Название (возможные значения: программирование, алгебра…) varchar(60) Нет

Таблица Account (тип отчетности)

Имя поля (столбца) Содержание Тип данных Возможность содержать NULL
Num Первичный ключ int Нет
Name Название (возможные значения: экзамен, зачет, дифференцированный зачет…) varchar(30) Нет

Таблица Mark (отметка)

Имя поля (столбца) Содержание Тип данных Возможность содержать NULL
Num Первичный ключ int Нет
Name Название (возможные значения: зачтено, не зачтено, отлично, хорошо…) varchar(30) Нет
Value Значение (возможные значения: 0, 1, …, 5) int Нет

Таблица Status (академический статус студента)

Имя поля (столбца) Содержание Тип данных Возможность содержать NULL
Num Первичный ключ int Нет
Name Название (возможные значения: обучается, отчислен, в академическом отпуске, в отпуске по уходу за ребенком)varchar(60) Нет

Таблица Position (должность)

Имя поля (столбца) Содержание Тип данных Возможность содержать NULL
Num Первичный ключ int Нет
Name Название (возможные значения: ассистент, старший преподаватель, доцент…) varchar(60) Нет

Таблица People (люди)

Имя поля (столбца) Содержание Тип данных Возможность содержать NULL
Num Первичный ключ int Нет
LastName Фамилия varchar(30) Нет
FirstName Имя varchar(30) Нет
MiddleName Отчество varchar(30) Да
Male Пол char(1) Нет
BrthDate День рождения datetime Да
Addr Адрес varchar(100) Да

Таблица Student (студент)

Имя поля (столбца) Содержание Тип данных Возможность содержать NULL
Num Первичный ключ int Нет
People Человек (внешний ключ ссылается на первичный ключ таблицы People) int Нет
Group Группа (внешний ключ ссылается на первичный ключ таблицы Group) int Нет
StudNum Номер студенческого билета varchar(30) Нет
Status Академический статус студента (внешний ключ ссылается на первичный ключ таблицы Status) int Нет

Таблица Teacher (преподаватель)

Имя поля (столбца) Содержание Тип данных Возможность содержать NULL
Num Первичный ключ (табельный номер сотрудника) int Нет
People Человек (внешний ключ ссылается на первичный ключ таблицы People) int Нет
Position Должность (внешний ключ ссылается на первичный ключ таблицы Position) int Нет

Таблица SemesterResults (результаты сессии)

Имя поля (столбца) Содержание Тип данных Возможность содержать NULL
Num Первичный ключ int Нет
Student Студент (внешний ключ ссылается на первичный ключ таблицы Student) int Нет
Semester Порядковый номер семестра int Нет
Account Тип отчетности (внешний ключ ссылается на первичный ключ таблицы Account) int Нет
Discipline Дисциплина (внешний ключ ссылается на первичный ключ таблицы Discipline) int Нет
Teacher Преподаватель (внешний ключ ссылается на первичный ключ таблицы Teacher) int Нет
Mark Отметка (внешний ключ ссылается на первичный ключ таблицы Mark) int Нет
Date Дата сдачи отчетности DateTime Нет

Контрольные вопросы

 

Назад: Лабораторная работа №1