Создание таблиц базы данных с помощью 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
|
|
)
Примечание. Ссылку можно создать только на существующую таблицу. Задать ссылку по внешнему ключу можно и после создания таблицы (подробно будет рассмотрено в следующей лабораторной работе).
Когда установлены связи между всеми таблицами, можно создать диаграмму, описывающую эти взаимосвязи.
Для создания диаграммы нужно щелкнуть правой кнопкой мыши на элементе БД «Диаграммы баз данных» и в открывшемся контекстном меню выбрать пункт «Создать диаграмму базы данных» (рис. 12).
Рисунок 12.
В открывшемся диалоговом окне нужно выбрать таблицы, которые будут добавлены на диаграмму (рис. 13).
Рисунок 13.
В результате будет получена диаграмма следующего вида:
Рисунок 14.
Задание.
Создайте все остальные таблицы, указанные в Приложении, используя SQL – запросы.
Создать диаграмму БД средствами среды SQL Server Management Studio
Приложение. Структура данных
Таблица 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?
- С помощью каких средств можно создать таблицу для MS SQL Server?
- Что такое первичный ключ?
- Каким образом можно создать автоматическую нумерацию строк таблицы?
- Что означают Not Null?
Дата добавления: 2019-01-14; просмотров: 1048; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!