Создание таблиц базы данных в среде 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 | Нет |
Контрольные вопросы
§ Каким образом можно получить доступ к MS SQL Server 2005-8?
§ С помощью каких средств можно создать таблицу для MS SQL Server 2005-8?
§ Что такое первичный ключ?
§ Каким образом можно создать автоматическую нумерацию строк таблицы?
§ Что означают Not Null?