База данных для хранения информации о студентах
Разработка и реализация базы данных карточек студентов. Работа с языком SQL. Анализ предметной области. Перечень хранимой информации: таблицы, поля, типы. Выделение справочных и оперативных данных. Создание и запуск базовых и продвинутых запросов SQL.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 17.11.2017 |
Размер файла | 1,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
50
Размещено на http://www.allbest.ru/
Содержание
- Введение
- 1. Анализ предметной области
- 1.1 Общие сведения
- 1.3 Перечень хранимой информации: таблицы, поля, типы
- 1.4 Выделение справочных и оперативных данных
- 1.5 Предполагаемые запросы к БД
- 1.6 Вывод по разделу
- 2. Моделирование предметной области
- 2.1 Общие сведения
- 2.2 Выделение сущностей, атрибутов, ключей, связей
- 2.3 Проектирование диаграммы сущность - связь в ЕА
- 2.4 Подготовка диаграммы сущность-связи в ЕА к переносу на целевую СУБД и автоматизированная генерация кода SQL
- 2.5 Создание БД в MSSQLSQRVER. Перенос схемы из ЕА
- 2.6 Создание диаграммы средствами MS SQL server и MS SQL server management studio
- 2.7 Начальное заполнение БД
- 2.8 Выводы по разделу
- 3. Создание и запуск базовых запросов SQL
- 3.1 Общие сведения
- 3.2 Запросы на выборку данных
- 3.3 Запрос на добавление и удаление записи
- 3.5 Выводы по разделу
- 4. Создание и запуск продвинутых запросов SQL
- 4.1 Общие сведения
- 4.2 Запросы на выборку данных
- 4.3 Запрос на добавление таблиц
- 4.4 Запрос на удаление и добавление
- 4.5 Создание и удаление индексов
- 4.3 Выводы по разделу
- Заключение
- Список литературы:
- Список сокращений
- Приложения
Введение
Целью создания курсовой работы была разработка и реализация базы данных карточек студентов, а так же получение навыков работы с языком SQL.
Предметной областью моей базы данных является карточка студента. В базе данных хранится информация о студентах. Так же есть таблица, в которой хранится информация о комнатах в общежитиях. В первом разделе подробно рассматривается предметная область. Определяются данные, которые будут храниться в базе данных. Так же определяются таблицы и поля, которые будут создаваться. В зависимости от типа хранимой информации, выбирается тип полей. Составляются предполагаемые запросы к БД.
Второй раздел посвящён проектированию базы данных в прикладной программе EnterpriseArchitect (создание таблиц, полей и связей между таблицами). А так же экспорт БД в целевую СУБД, в нашем случае это MSSQLServer 2008 R2. Построение диаграммы базы, средствами MSSQLServer 2008 R2, и заполнение данными базу.
Последующие разделы посвящены созданию запросов к БД на языке SQL. Используются простые запросы, включающие работу с одной таблицей, так и продвинутые запросы, которые работают с несколькими таблицами в БД.
В заключении приводятся основные результаты и выводы по работе.
Приложения содержат схему БД и полный скрипт её создания в среде MSSQLServer 2008 R2.
база карточка студент справочный
1. Анализ предметной области
1.1 Общие сведения
В карточке студента основными данными являются данные о студентах (ФИО, номер зачетной книжки, комната, номер заселения), Комендантах (ФИО, телефон, к какому общежитию относится), Общежития (номер общежития, Адрес, Коменданты). В 1 главе расписываются основные сведения о предметной области с приведением конкретных примеров, создается перечень хранимой информации с определением типов полей, выделяются справочные и оперативные данные, создаются предполагаемые запросы к БД и делаются выводы по разделу.
1.2 Основные сведения о предметной области
База данных должна хранить информацию о студентах, поступивших в ВУЗ, комендантов. Благодаря записи студентов база данных должна упростить работу регистратуре и избежать путанице в расселениях. В наше время существует несколько похожих БД. Такие БД, как правило, содержат информацию обо всех созданных в системе студентов. Список студентов содержит следующую информацию: дата поступления, номер карты студента, Ф.И. О, телефон, дата рождения и пр. База данных карточка студента позволяет выполнять операции быстрого добавления нового студента, корректировку данных существующего студента, удаление. Основными функциональными возможностями являются:
учёт студентов
учет успеваемости студента
ведение базы данных студента, полная информация о студенте
запись на расселение
формирование истории студента, фиксация предпочтений
помощь вновь поступившим студентам
Таблица 1 - Основные достоинства и недостатки
Достоинства |
Недостатки |
|
Формирование истории студента, фиксация предпочтений |
Неудобный интерфейс сайта |
|
Разграничение прав доступа сотрудников к системе |
Отсутствие расписания переселения |
|
Защищённость системы |
Неудобное управление |
В данном подразделе рассмотрен принцип работы аналогичных систем, были выделены достоинства и недостатки, необходимо их учесть при создании БД и избежать их. На рисунках 1,2 - показаны основные аналоги.
Рисунок 1 - Аналог системы
Рисунок 2 - Аналог системы
1.3 Перечень хранимой информации: таблицы, поля, типы
Как говорилось выше, все, что связано со студентами стоит хранить, записывать. Основной хранимой информацией является, информация о свободных комнатах в общежитии. Для удобства хранения и организации доступа к информации, она будет храниться в таблицах.
Таблица 2 - Таблица данных
Название таблицы |
Поле |
Тип |
|
Студент |
Код студента |
число |
|
Фамилия |
текст |
||
Имя |
текст |
||
Отчество |
текст |
||
Номер зачётки |
число |
||
Код комнаты |
число |
||
Коменданты |
Код коменданта |
число |
|
Фамилия |
текст |
||
Имя |
текст |
||
Отчество |
текст |
||
Номер телефона |
число |
||
Общежития |
Номер общежития |
число |
|
Адрес |
текст |
||
Код коменданта |
число |
||
Комнаты |
Код комнаты |
число |
|
Номер общежития |
число |
||
Номер комнаты |
число |
||
Этаж |
число |
||
Кол-во мест |
число |
||
Заселение студентов |
Номер заселения |
число |
|
Код студента |
число |
||
Код комнаты |
число |
1.4 Выделение справочных и оперативных данных
Таблицы БД делятся на два вида: оперативные и справочные. В справочных таблицах хранится постоянная информация, которая не изменятся, а все операции связанные с ней, являются лишь чтением. Таблицы оперативных данных постоянно изменяются.
Таблица 3 - Справочные и оперативные данные
Справочные таблицы |
Общежитие |
|
Комнаты |
||
Коменданты |
||
Оперативные таблицы |
Студенты |
|
Заселение студентов |
1.5 Предполагаемые запросы к БД
Исходя из анализа запросов в реальных базах данных, составим список:
1. Вывести фамилии студента по номеру зачётки или же по номеру комнаты, в которой он проживает;
2. Поиск свободных комнат;
3. Поиск студентов проживающих вместе;
4. Поиск комендантов по его коду или имени;
5. Поиск комнат по коду студента.
1.6 Вывод по разделу
В данном разделе была проанализирована предметная область. Определена информация, хранимая в БД. Обозначены таблицы, поля и типы полей. Разделены таблицы, на справочные и оперативные. Составлены необходимые запросы, которые нужно будет реализовать в БД.
2. Моделирование предметной области
2.1 Общие сведения
В данном разделе будет моделироваться проработанная теоретически предметная область в среде EnterpriseArchitect, с измененными и усовершенствованными таблицами, полями и типом данных. Выделение и добавлением ключей, связей, атрибутов. Экспортирование получившейся базы данных в среду SQL, где непосредственно и будет заполняться база.
2.2 Выделение сущностей, атрибутов, ключей, связей
Исходя из проанализированных баз данных, созданы основные таблицы с полями и типом данных, они приведены в 4 таблице.
Таблица 4 - Типы полей и данных моей БД
Название таблицы |
Атрибуты |
Тип Данных |
|
Students |
StudentCode |
bigint |
|
Surname |
nvarchar |
||
Name |
nvarchar |
||
SecondName |
nvarchar |
||
NumberZachetki |
bigint |
||
RoomCode |
bigint |
||
Comendants |
ComendantCode |
bigint |
|
Surname |
nvarchar |
||
Name |
nvarchar |
||
SecondName |
nvarchar |
||
NmberPhone |
bigint |
||
Obsejitia |
NumberObsejitia |
bigint |
|
Address |
nvarchar |
||
ComendantCode |
bigint |
||
Rooms |
RoomCode |
bigint |
|
NumberObsejitia |
bigint |
||
NumberRoom |
bigint |
||
Floor |
bigint |
||
KolvoMest |
bigint |
||
ZaselenieStudents |
NumberZaselenia |
bigint |
|
StudentCode |
bigint |
||
RoomCode |
bigint |
Первичный ключ - это уникальный идентификатор, который идентифицирует каждую запись в таблице. Помимо первичного ключа в таблице существуют внешние ключи для связи с другими таблицами, они создаются в соответствии с полями, с которыми связана другая таблица.
Таблица 5 - Выделение первичного (PK) и вторичного (FK) ключей
№ |
Наименование таблицы |
Первичный ключ (РК) |
Вторичный ключ (FK) |
|
1 |
Students |
StudentCode |
RoomCode |
|
2 |
Comendants |
ComendantCode |
- |
|
3 |
Obsejitia |
NumberObsejitia |
ComendantCode |
|
4 |
Rooms |
RoomCode |
NumberObsejitia |
|
5 |
ZaselenieStudents |
NumberZaselenia |
StudentCode, RoomCode |
Исходя из таблицы выше, видно какие поля в таблице являются первичными, а какие вторичными ключами.
2.3 Проектирование диаграммы сущность - связь в ЕА
После анализа сущностей, необходимых ключей и связей необходимо начать проектирование базы данных в среде EnterpriseArchitect. Для этого составим предварительную таблицу с необходимыми ключами и связями.
Таблица 6 - Выделение ключей и связей
Название таблицы |
Атрибуты |
Тип Данных |
|
Students |
StudentCode (PK) |
bigint |
|
Surname |
nvarchar |
||
Name |
nvarchar |
||
SecondName |
nvarchar |
||
NumberZachetki |
bigint |
||
RoomCode (FK) |
bigint |
||
Comendants |
ComendantCode (PK) |
bigint |
|
Surname |
nvarchar |
||
Name |
nvarchar |
||
SecondName |
nvarchar |
||
NmberPhone |
bigint |
||
Продолжение таблицы 6 |
|||
Obsejitia |
NumberObsejitia (PK) |
bigint |
|
Address |
nvarchar |
||
ComendantCode (FK) |
bigint |
||
Rooms |
RoomCode (PK) |
bigint |
|
NumberObsejitia (FK) |
bigint |
||
NumberRoom |
bigint |
||
Floor |
bigint |
||
KolvoMest |
bigint |
||
ZaselenieStudents |
NumberZaselenia (PK) |
bigint |
|
StudentCode (FK) |
bigint |
||
RoomCode (FK) |
bigint |
В данной выше таблице наглядно видны связи между таблицами, с помощью ключей. Далее нужно построить БД. Для этого собираем схему в EnterpriseArchitect, указываем связи между таблицами. Получившаяся схема представлена в приложении А.
2.4 Подготовка диаграммы сущность-связи в ЕА к переносу на целевую СУБД и автоматизированная генерация кода SQL
Для того чтобы экспортировать схему, нужно сгенерировать код. Делается это путём следующих операций: нажатия на Tools-DatabaseEngineering-GeneratePackageDDL.
Рисунок 6 - Генерация кода
Далее задаётся название БД и место сохранения. В данном окне выбирается несколько пунктов, сначала ставится галочка напротив CreatePrimary/ForeignKeyConstraints, для того, что бы в базе данных в SQL были созданы ключи PK и FK. Дальше ставится галочка напротив GenerateIndex/Constraints, для того, что бы в БД были сгенерированы индексы. Индексы, требуются для увеличения скорости работы БД. GenerateTableOwner - для какого наименования БД будет использован полученный код. Дальше нажимаем Generate.
Рисунок 7 - Процесс генерирования кода
2.5 Создание БД в MSSQLSQRVER. Перенос схемы из ЕА
Затем код экспортируется в среду SQL. Для начала создадим пустую БД
Рисунок 8 - создание БД в среде SQL
После этого создадим пустой запрос и в него вставляем получившийся код, запускаем его.
Рисунок 9 - применение сгенерированного кода
Код удачно экспортирован. Теперь можно просмотреть результат применения кода.
Рисунок 10 - Результат применения кода
Наблюдаем таблицы и ключи, ранее созданные в среде ЕА.
2.6 Создание диаграммы средствами MS SQL server и MS SQL server management studio
Для простоты восприятия БД в среде SQL, создадим диаграмму средствами SQL.
Рисунок 11 - Схема БД в SQL
Построенная диаграмма аналогична диаграмме в ЕА. Конструктор баз данных - это визуальное средство, позволяющее конструировать и визуализировать базу данных, с которой установлено соединение. Конструктор баз данных используется для создания, редактирования и удаления таблиц, столбцов, ключей, индексов, связей и ограничений. Для визуализации базы данных можно создать одну или несколько диаграмм, иллюстрирующих некоторые или все имеющиеся в ней таблицы, столбцы, ключи и связи. Для любой базы данных можно создать любое необходимое количество диаграмм; каждая из таблиц базы данных может использоваться в любом количестве диаграмм. Таким образом, для визуализации различных частей базы данных или для акцентирования различных аспектов её конструирования можно создавать различные диаграммы. Например, можно создать большую диаграмму, в которой будут отображаться все таблицы и столбцы, а также меньшую диаграмму, в которой будут отображаться все таблицы, но не будет столбцов. Внутри диаграммы базы данных у каждой связи есть три отдельных элемента: конечные точки, стиль линии и связанные таблицы.
Конечные точки - линии показывают вид связи: "один к одному" или "один ко многим". Если на одной конечной точке связи находится ключ, а на другой - знак бесконечности, то это связь "один ко многим". Если у связи по одному ключу на каждой конечной точке, то это связь "один к одному".
Стиль линии. Разновидность линии (не её конечные точки) показывает, проверяет ли СУБД ссылочную целостность для связи при добавлении новых данных в таблицу, связанную с помощью внешнего ключа. Если связь нарисована в виде сплошной линии, это значит, что СУБД проверяет ссылочную целостность для связи при добавлении или изменении строк в таблице, связанной с помощью внешнего ключа. Если линия пунктирная, это значит, что СУБД не проверяет ссылочную целостность для связи при добавлении или изменении строк в таблице, связанной с помощью внешнего ключа.
Связанные таблицы. Линия связи показывает, что две таблицы связаны с помощью внешнего ключа. Для связи "один ко многим" таблица, связанная с помощью внешнего ключа, - это таблица около цифры 8 на линии. Если обе конечные точки линии присоединены к одной таблице, это означает возвратную связь.
2.7 Начальное заполнение БД
Для заполнения БД используется оператор InsertInto, заполняются несколько первых строк для того, чтобы продолжить работу с БД.
ЗапросSQL:
InsertIntoComendants (ComendantCode,Surname,Name,SecondName,NmberPhone)
VALUES (1,'Рионова','Александра','Александровна','927-217-66-77');
INSERTINTOComendantsVALUES (2,'Сидоров','Петр','Петрович','937-512-64-72');
INSERTINTOComendantsVALUES (3,'Хохлов','Василий','Иванович','45-34-86');
Листинг 1 - Заполнение БД
Рисунок 12 - Заполнение БД
2.8 Выводы по разделу
В данном разделе была спроектирована БД в среде EA и визуально представлена, затем перенесена в среду SQL, где была заполнена данными и представлена в виде схемы средствами SQL.
3. Создание и запуск базовых запросов SQL
3.1 Общие сведения
В данном разделе будет проводиться создание и запуск простых запросов к базе данных, в среде SQL. SQL запрос - это универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL является, прежде всего, информационно-логическим языком, предназначенным для описания, изменения и извлечения данных, хранимых в реляционных базах данных. SQL нельзя назвать языком программирования.
Изначально SQL был основным способом работы пользователя с базой данных и позволял выполнять следующий набор операций:
- создание в базе данных новой таблицы;
- добавление в таблицу новых записей;
- изменение записей;
- удаление записей;
- выборка записей из одной или нескольких таблиц (в соответствии с заданным условием);
- изменение структур таблиц.
Со временем SQL усложнился - обогатился новыми конструкциями, обеспечил возможность описания и управления новыми хранимыми объектами (например, индексы, представления, триггеры и хранимые процедуры) - и стал приобретать черты, свойственные языкам программирования.
При всех своих изменениях SQL остаётся единственным механизмом связи между прикладным программным обеспечением и базой данных. В то же время современные СУБД, а также информационные системы, использующие СУБД, предоставляют пользователю развитые средства визуального построения запросов.
Каждое предложение SQL - это либо запрос данных из базы, либо обращение к базе данных, которое приводит к изменению данных в базе. В соответствии с тем, какие изменения происходят в базе данных, различают следующие типы запросов:
- запросы на создание или изменение в базе данных новых или существующих объектов (при этом в запросе описывается тип и структура создаваемого или изменяемого объекта);
- запросы на получение данных;
- запросы на добавление новых данных (записей);
- запросы на удаление данных;
- обращения к СУБД.
Основным объектом хранения реляционной базы данных является таблица, поэтому все SQL-запросы - это операции над таблицами. В соответствии с этим, запросы делятся на:
- запросы, оперирующие самими таблицами (создание и изменение таблиц);
- запросы, оперирующие с отдельными записями (или строками таблиц) или наборами записей.
Запросы первого типа в свою очередь делятся на запросы, предназначенные для создания в базе данных новых таблиц, и на запросы, предназначенные для изменения уже существующих таблиц. Запросы второго типа оперируют со строками, и их можно разделить на запросы следующего вида:
- вставка новой строки;
- изменение значений полей строки или набора строк;
- удаление строки или набора строк.
Самый главный вид запроса - это запрос, возвращающий (пользователю) некоторый набор строк, с которым можно осуществить одну из трёх операций:
- просмотреть полученный набор;
- изменить все записи набора;
- удалить все записи набора.
Таким образом, использование SQL сводится, по сути, к формированию всевозможных выборок строк и совершению операций над всеми записями, входящими в набор.
3.2 Запросы на выборку данных
SELECT - оператор DML языка SQL, возвращающий набор данных (выборку) из базы данных, удовлетворяющих заданному условию.
В большинстве случаев, выборка осуществляется из одной или нескольких таблиц. В тех СУБД, где реализованы представления и хранимые процедуры, также возможно получение соответствующих наборов данных.
При формировании запроса SELECT пользователь описывает ожидаемый набор данных: его вид (набор столбцов) и его содержимое (критерий попадания записи в набор, группировка значений, порядок вывода записей и т.п.).
Запрос выполняется следующим образом: сначала извлекаются все записи из таблицы, а затем для каждой записи набора проверяется её соответствие заданному критерию. Если осуществляется слияние из нескольких таблиц, то сначала составляется произведение таблиц, а уже затем из полученного набора отбираются требуемые записи.
a) Выбрать все.
Для начала, выберем самый простой запрос, необходимый для визуализации данных, вывод всей информации о студентах.
Запрос SQL:
SELECT*
FROMStudents
Листинг 2 - Запрос SQL
Рисунок 13 - Результат запроса
b) Выбрать все и условие.
Если же нам нужно вывести список студентовc определённым номером зачётки, то будет использоваться запрос с условием.
Запрос SQL:
SELECT*
FROMStudents
whereNumberZachetkilike'09ВП118'
Листинг 3 - Запрос с условием
Рисунок 14 - Результат запроса
c) Выбрать что-то и условие:
Для выбора студентом комнаты с определённым кол-во мест, необходимо создать запрос с определенным условием:
Запрос SQL:
SELECTRoomCode
FROMRooms
whereKolvoMest='4'
Листинг 4 - Запрос с условием
Рисунок 15 - Результат запроса
d) Выбрать что-то и составное условие (И):
Если требуется вывести информацию о том, какой комендант прикреплён к общежитию, то стоит воспользоваться составным условием (И).
Запрос SQL:
SELECTComendantCode
FROMObsejitia
whereNumberObsejitia='1'andAddres='Стасова 36'
Листинг 5 - Запрос с условием (И)
Рисунок 16 - Результат запроса
e) Выбрать что-то и составное условие (ИЛИ):
Если нужно вывести фамилии студента по номеру зачётки или же по номеру комнаты, в которой он проживает, то стоит воспользоваться составным условием (ИЛИ).
Запрос SQL:
SELECTSurname
FROMStudents
whereNumberZachetki='11ВЕ222'orRoomCode='4'
Листинг 6 - Запрос с условием (ИЛИ)
Рисунок 17 - Результат запроса
3.3 Запрос на добавление и удаление записи
INSERT - оператор языка SQL, который позволяет добавить строки в таблицу, заполняя их значениями. Значения можно вставлять перечислением с помощью слова values и перечислив их в круглых скобках через запятую или оператором select.
Во время выполнения оператора могут возникнуть ошибки:
- если при создании таблицы для поля был указан параметр notnull, и не было определено значение по умолчанию, то при отсутствии для него вставляемого значения возникнет ошибка. Решение очевидно:
- либо убрать параметр notnull
- либо указать значение по умолчанию
- либо вставить значение
- если произойдет попытка вставки в поле с типом identity (автоинкремент), то также произойдет ошибка. Решить проблему можно двумя способами:
- не вставлять значение в это поле
- указать опцию identity_inserton после чего вставить уникальное значение для этого столбца.
Ниже представлены запрос SQL на вставку данных в таблицы, и результат выполнения.
Пример добавления в таблицу строки, с помощью команды INSERT. В данном случае запись нового студента.
Запрос SQL:
InsertIntoStudents (StudentCode,Surname,Name,SecondName,NumberZachetki,RoomCode)
Values (100,'Ололошов','Ололош','Петрович','11ЦУ222',10)
Листинг 7 - Добавление записи
Рисунок 18 - Данные до добавления
Рисунок 19 - Процесс добавления данных и его результат
UPDATE используется для обновления информации в базе данных.
Далее рассмотрен пример изменения имени студента.
Запрос SQL:
updateStudents
setName='Стас'
whereStudentCode= 100
Листинг 9 - Обновление записи
Рисунок 20 - Данные до обновления
Рисунок 21 - Данные после обновления
Delete - операция удаления записей из таблицы. Критерий отбора записей для удаления определяется выражением where. В случае если критерий отбора не определён, выполняется удаление всех записей. При этом никакого результата команда не возвращает и, следовательно, не может быть использована в качестве параметра в команде SELECT. При удалении можно задавать конструкции JOIN связывающие несколько страниц, аналогично тому, как связываются таблицы в запросах выборки SELECT.
Пример удаления строки из таблицы.
Если вдруг студента отчислили, то удаляем его из БД следующим запросом:
deleteStudents
whereStudentCode= 100
Листинг 10 - Удаление записи
Рисунок 22 - Данные до удаления
Рисунок 23 - Данные после удаления
3.5 Выводы по разделу
В данном разделе, созданы и запущены основные запросы, по работе с одной таблицей, были добавлены новые студенты, так же проведено удаление строки из таблицы и обновление имени студента.
4. Создание и запуск продвинутых запросов SQL
4.1 Общие сведения
Продвинутые запросы SQL отличаются от базовых запросов тем, что тут идёт работа не с 1 таблицей, а с 2-мя и более. Так же возможность создавать отдельные таблицы и так же проводить с ними операции, как удаление, изменение и прочее. Далее возможность работы с индексами, которые позволяют ускорять поиск по данным.
4.2 Запросы на выборку данных
Выбрать все из нескольких таблиц:
Запрос SQL:
select*
fromStudents,Rooms
Листинг 11 - Код запроса
Рисунок 24 - Результат запроса
Если нам нужно посмотреть список студентов проживающих вместе в одной комнате, то необходимо использовать запрос: выбрать все из несколько таблиц и условие.
Запрос SQL:
select*
fromStudents,Rooms
whereStudents. RoomCodelikeRooms. RoomCode
Листинг 30 - Продвинутый запрос с условием
Рисунок 25 - Результат запроса
Чтобы посмотреть за каким комендантом закреплено общежитие, контактный телефон, то необходимо использовать запрос: выбрать что-то из несколько таблиц и условие.
Запрос SQL:
selectComendants. Name,Comendants. SecondName,Comendants. NmberPhone,Obsejitia. Addres
fromComendants,Obsejitia
whereComendants.comendantCodelikeObsejitia.comendantCode
Листинг 32 - Запрос с условием
Рисунок 26 - Результат запроса
Чтобы посмотреть данные определённого коменданта и узнать адрес его работы, то необходимо использовать запрос: выбрать что-то из несколько таблиц и составное условие (И).
Запрос SQL:
selectComendants. Name,Comendants. SecondName,Comendants. NmberPhone,Obsejitia. Addres
fromComendants,Obsejitia
whereComendants.comendantCodelikeObsejitia.comendantCodeandObsejitia.comendantCode='2'
Листинг 14 - Запрос с условием (И)
Рисунок 27 - Результат запроса
Если нам нужно найти студента по коду заселения или по номеру зачётки, то необходимо использовать запрос: выбрать что-то из несколько таблиц и составное условие (ИЛИ):
Запрос SQL:
SelectStudents. Surname,Students. Name,Students. SecondName
FromStudents,ZaselenieStudents
WhereStudents. NumberZachetki='11ВЕ124'orZaselenieStudents. NumberZaselenia='4'
Листинг 15 - Запрос с условием (ИЛИ)
Рисунок 28 - Результат запроса
4.3 Запрос на добавление таблиц
В процессе разработки БД стало необходимо добавить четыре новые таблицы для более удобной работы: Успеваемость, Кураторы, Преподаватели, Кафедры, из которых таблицы “Куратор”, “Преподаватели” являются справочными, остальные оперативными. Их поля и ключи представлены в таблице 7. Для создания таблицы про помощи встроенных функций SQL, можно использовать команду CREATTABLE.
Таблица 7 - Новые таблицы
Сущность |
Атрибут |
Тип данных |
Ключ |
|
Uspevaemost (Успеваемость) |
StudentCode |
bigint |
FK |
|
UspevaemostCode |
bigint |
PK |
||
Otsenka_zachet |
nvarchar |
- |
||
Kuratory (Кураторы) |
StudentCode |
bigint |
FK |
|
Surname |
nvarchar |
- |
||
Name |
nvarchar |
- |
||
SecondName |
nvarchar |
- |
||
KuratoryCode |
bigint |
FK |
||
KafedryCode |
bigint |
- |
||
Prepodavateli (Преподаватели) |
Surname |
nvarchar |
PK |
|
Name |
nvarchar |
- |
||
SecondName |
nvarchar |
- |
||
KafedryCode |
bigint |
FK |
||
kafedry (Кафедры) |
KafedryCode |
bigint |
PK |
|
KafedryName |
nvarchar |
- |
ЗапросSQL:
CREATETABLEUspevaemost (
StudentCodebigintNOTNULL,
UspevaemostCodebigintNOTNULL,
Otsenka_zachetnvarchar (55) NOTNULL,);
Листинг 16 - Создание таблицы
Рисунок 29 - Результат запроса
Оставшиеся четыре таблицы создаются таким же способом.
CREATETABLEKuratory (
StudentCodebigintNOTNULL,
KuratoryCodebigintNOTNULL,
Surnamenvarchar (55) NOTNULL,
Namenvarchar (55) NOTNULL,
SecondNamenvarchar (55) NOTNULL,
KafedryCodebigintNOTNULL,);
Листинг 17 - Создание таблицы
Рисунок 30- Результат запроса
CREATETABLEPrepodavateli (
KafedryCodebigintNOTNULL,
Surnamenvarchar (55) NOTNULL,
Namenvarchar (55) NOTNULL,
SecondNamenvarchar (55) NOTNULL,);
Листинг 18 - Создание таблицы
Рисунок 31 - Результат запроса
Далее задается PK и FK в созданных таблицах. Сделаем это через графическую среду. Для этого создадим диаграмму в SQL
Рисунок 32 - Диаграмма после добавления таблиц
Чтобы выделить ключи, у ключевого поля нужно вызвать контекстное меню.
Рисунок 33 - Контекстное меню для выделения PK
Далее протягивается связь между первичным ключом одной таблицы и внешним ключом другой таблицы.
Рисунок 34 - Создание Связи между таблицами
Оставшиеся связи добавляем аналогичным способом, результат добавления представлен на рисунке 42.
Рисунок 34 - Диаграмма после добавления таблиц и связей
4.4 Запрос на удаление и добавление
Для удаления ненужного столбца используется следующий запрос:
ЗапросSQL:
altertablePrepodavateli
dropcolumnSurname
Листинг 20 - Удаления столбца
Рисунок 35 - Результат до удаления
Рисунок 36 - Результат удаления
Чтобы добавить столбец используется команда ALTERTABLE. Воспользуемся ей, чтобы вернуть наш столбец.
ЗапросSQL:
altertablePrepodavateli
addSurnamenvarchar (55) NOTNULL
Листинг 21 - Добавление столбца
Рисунок 37 - Результат добавления
4.5 Создание и удаление индексов
Создадим индекс для таблиц. Индекс создаётся с целью повышения производительности поиска данных. Таблицы в базе данных могут иметь большое количество строк, которые хранятся в произвольном порядке, и их поиск по заданному критерию путём последовательного просмотра таблицы строка за строкой может занимать много времени. Индекс формируется из значений одного или нескольких столбцов таблицы и указателей на соответствующие строки таблицы и, таким образом, позволяет искать строки, удовлетворяющие критерию поиска. Для этого впишем следующий код:
useKursov;
createindexstudentsonStudents (StudentCode)
Листинг 22 - Создание индекса
Рисунок 38 - Результат добавления индекса
Для оставшихся таблиц происходит аналогичное добавление. Для создания уникального индекса необходимо вписать следующий код:
createuniqueindexroomsonRooms (RoomCode)
Листинг 23 - Создание уникального индекса
Рисунок 39 - Результат создания
Для удаления индекса используется команда DROPINDEX.
DropindexroomsonRooms
Листинг 24 - Удаление индекса
Рисунок 40 - Результат удаления
Бывают случаи, когда одну и ту же информацию просматривают множество раз. Для более удобного поиска такой информации, она выносится в отдельную таблицу.
Запрос SQL:
select*intoStudentCodefromStudents
whereStudentCode>'1'
Листинг 25 - Вынесение информации в отдельную таблицу
Рисунок 41 - Результат добавления
Рисунок 42 - Результат добавления
Для создания одной таблицы из нескольких требуется следующий запрос: selectSecondName,Name,NumberRoom, intotable1, fromStudentCode,Rooms
Листинг 26 - Создание таблицы
Рисунок 43 - Результат создания
Рисунок 44 - Результат создания
Для удаления таблицы можно воспользоваться командой DROPTABLE.
ЗапросSQL:
droptableTable1
Листинг 27 - Удаление таблицы
Рисунок 45 - Результат удаления
4.3 Выводы по разделу
В данном разделе были созданы продвинутые запросы к БД, такие как добавление таблиц и индексов, так же их редактирование и удаление, проделана работа по созданию связей между таблицами.
Заключение
В результате проделанной курсовой работы была разработана и реализована БД карточка студента.
Были изучены основы языка SQL, которые позволяют создать таблицу, поля, связи, отредактировать все записи, таблицы и поля. Заполнение БД 2-мя способами, как графическим, так и при помощи языка SQL. Удаление самой БД, отдельных частей (таблицу или информацию).
В базе данных хранится информация о студентах. Так же есть таблица, в которой хранится база данных, хранится информация о студентах. Так же есть таблица, в которой хранится информация о комнатах в общежитиях. В первом разделе подробно рассматривается предметная область. Определяются данные, которые будут храниться в базе данных. Так же определяются таблицы и поля, которые будут создаваться. В зависимости от типа хранимой информации, выбирается тип полей. Составляются предполагаемые запросы к БД.
Второй раздел посвящён проектированию базы данных в прикладной программе EnterpriseArchitect (создание таблиц, полей и связей между таблицами). А так же экспорт БД в целевую СУБД, в нашем случае это MSSQLServer 2008 R2. Построение диаграммы базы, средствами MSSQLServer 2008 R2, и заполнение данными базу.
Последующие разделы посвящены созданию запросов к БД на языке SQL. Используются простые запросы, включающие работу с одной таблицей, так и продвинутые запросы, которые работают с несколькими таблицами в БД.
В заключении приводятся основные результаты и выводы по работе.
Приложения содержат схему БД и полный скрипт её создания в среде MSSQLServer 2008 R2. В ходе курсового проектирования все поставленные задачи были успешно выполнены.
Список литературы
Основная литература:
1. Аткинсон, Леон MySQL. Библиотека профессионала; М.: Вильямс, 2010. - 624 c.
2. Горев А., Ахаян Р., Макашарипов С. Эффективная работа с СУБД. - СПб.: Питер, 1997. - 704 с.
3. Соломон Девид и др. Microsoft SQL Server 6.5 Энциклопедия пользователя. - К.: ДиаСофт, 1998. - 784 с.
4. Джеймс Р. Грофф, Пол Н. Вайнберг. SQL: Полное руководство. - К.: BHV, 1998. - 608 c.
5. Ладани Ханс. SQL. Энциклопедия пользователя. - М.: ДиаСофт, 1998. - 624 с
Дополнительная литература:
1 Горелов А., Макашарипов С., Владимиров Ю. Microsoft SQL Server 6.5 для профессионалов. - СПб: Питер, 1998. - 464 с.
2 РобертД. Шнайдер. Microsoft SQL Server. Проектирование высокопроизводительных баз данных. - М.: ЛОРИ, 1998. - 361 с.
3 РонСаукап. Основы Microsoft SQL Server 6.5 - М.: Издательский отдел “Русская редакция” ТОО "ChannelTraidingLtd". - 1999. - 704 c.
4 Уанкуп Д. MS SQL Server 6.5 в подлиннике. - М.: Издательский дом “Вильямс”, 1999. - 912 с.
5 Бек, Кент Шаблоны реализации корпоративных приложений; М.: Вильямс, 2008. - 369 c.
6 Роберт Сигнор, Михаэль О. Стегман. Использование ODBC для доступа к базам данных. - М.: БИНОМ, 1995. - 384 с.
7 Кузнецов С.Д. Стандарты языка реляционных баз данных SQL: краткий обзор // СУБД. - N 2, 1996. - C.6-36
8 Венкатрао М., Пиццо М. SQL/CLI - новый стиль связывания для SQL // СУБД. - N 2, 1996. - C.37-44
9 Боуман Дж., Эмерсон С., Дарновски М. Практическое руководство по SQL. - М.: Диалектика, 1997. - 320 с.
10 Райан Стивенс, Рональд Р. Плю. SQL. - М.: БИНОМ, 1997. - 400с.
Интернет ресурсы:
1. Форум программистов и сисадминов CyberForum.ru. URL: http://www.cyberforum.ru/ (дата обращения: 15.10.2014; 10.01.2015).
2. Самоучитель по SQLonlinesamoucka.ru. URL: http://samoucka.ru/document29118.html (дата обращения: 15.10.2014; 10.01.2015).
3. О проекте “Самсон" - аналог БД samson-rus. URL: http://samson-rus.com/content/view/15/37/ (дата обращения 15.10.2014; 10.01.2015).
4. Публикации про SQLsql.ru. URL: http://www.sql.ru/articles/publications. shtml (дата обращения 15.10.2014; 10.01.2015).
Список сокращений
EA - EnterpriseArchitect
БД - база данных
СУБД - система управления базами данных
PK - первичный ключ
FK - вторичный ключ
SQL - StructuredQueryLanguage (Структурированный язык запросов)
Приложения
Приложение А
Схема БД
Приложение А - Схема БД в ЕА
Приложение Б
SQL код БД
USEKursov
;
IFEXISTS (SELECT*FROMdbo. sysobjectsWHEREid=object_id ('FK_ComendantCode') ANDOBJECTPROPERTY (id,'IsForeignKey') = 1)
ALTERTABLEObsejitiaDROPCONSTRAINTFK_ComendantCode
;
IFEXISTS (SELECT*FROMdbo. sysobjectsWHEREid=object_id ('FK_NumberObsejitia') ANDOBJECTPROPERTY (id,'IsForeignKey') = 1)
ALTERTABLERoomsDROPCONSTRAINTFK_NumberObsejitia
;
IFEXISTS (SELECT*FROMdbo. sysobjectsWHEREid=object_id ('FK_RoomCode') ANDOBJECTPROPERTY (id,'IsForeignKey') = 1)
ALTERTABLEZaselenieStudentsDROPCONSTRAINTFK_RoomCode
;
IFEXISTS (SELECT*FROMdbo. sysobjectsWHEREid=object_id ('FK_StudentCode') ANDOBJECTPROPERTY (id,'IsForeignKey') = 1)
ALTERTABLEZaselenieStudentsDROPCONSTRAINTFK_StudentCode
;
IFEXISTS (SELECT*FROMdbo. sysobjectsWHEREid=object_id ('Comendants') ANDOBJECTPROPERTY (id,'IsUserTable') = 1)
DROPTABLEComendants
;
IFEXISTS (SELECT*FROMdbo. sysobjectsWHEREid=object_id ('Obsejitia') ANDOBJECTPROPERTY (id,'IsUserTable') = 1)
DROPTABLEObsejitia
;
IFEXISTS (SELECT*FROMdbo. sysobjectsWHEREid=object_id ('Rooms') ANDOBJECTPROPERTY (id,'IsUserTable') = 1)
DROPTABLERooms
;
IFEXISTS (SELECT*FROMdbo. sysobjectsWHEREid=object_id ('Students') ANDOBJECTPROPERTY (id,'IsUserTable') = 1)
DROPTABLEStudents
;
IFEXISTS (SELECT*FROMdbo. sysobjectsWHEREid=object_id ('ZaselenieStudents') ANDOBJECTPROPERTY (id,'IsUserTable') = 1)
DROPTABLEZaselenieStudents
;
CREATETABLEComendants (
ComendantCodebigintNOTNULL,
Surnamenvarchar (50) NOTNULL,
Namenvarchar (50) NOTNULL,
SecondNamenvarchar (50) NOTNULL,
NmberPhonenvarchar (20) NOTNULL
)
;
CREATETABLEObsejitia (
NumberObsejitiabigintNOTNULL,
Addresnvarchar (50) NOTNULL,
ComendantCodebigintNOTNULL
)
;
CREATETABLERooms (
RoomCodebigintNOTNULL,
NumberObsejitiabigintNOTNULL,
NumberRoombigintNOTNULL,
FloorbigintNOTNULL,
KolvoMestbigintNOTNULL
)
;
CREATETABLEStudents (
StudentCodebigintNOTNULL,
Surnamenvarchar (50) NOTNULL,
Namenvarchar (50) NOTNULL,
SecondNamenvarchar (50) NOTNULL,
NumberZachetkinvarchar (40) NOTNULL,
RoomCodebigintNOTNULL
)
;
CREATETABLEZaselenieStudents (
NumberZaseleniabigintNOTNULL,
StudentCodebigintNOTNULL,
RoomCodebigintNOTNULL
)
;
ALTERTABLEComendants
ADDCONSTRAINTUQ_Comendants_ComendantCodeUNIQUE (ComendantCode)
;
ALTERTABLEObsejitia
ADDCONSTRAINTUQ_Obsejitia_NumberObsejitiaUNIQUE (NumberObsejitia)
;
ALTERTABLERooms
ADDCONSTRAINTUQ_Rooms_RoomCodeUNIQUE (RoomCode)
;
ALTERTABLEStudents
ADDCONSTRAINTUQ_Students_StudentCodeUNIQUE (StudentCode)
;
ALTERTABLEZaselenieStudents
ADDCONSTRAINTUQ_ZaselenieStudents_NumberZaseleniaUNIQUE (NumberZaselenia)
;
ALTERTABLEComendantsADDCONSTRAINTPK_Comendants
PRIMARYKEYCLUSTERED (ComendantCode)
;
ALTERTABLEObsejitiaADDCONSTRAINTPK_Obsejitia
PRIMARYKEYCLUSTERED (NumberObsejitia)
;
ALTERTABLERoomsADDCONSTRAINTPK_Rooms
PRIMARYKEYCLUSTERED (RoomCode)
;
ALTERTABLEStudentsADDCONSTRAINTPK_Students
PRIMARYKEYCLUSTERED (StudentCode)
;
ALTERTABLEZaselenieStudentsADDCONSTRAINTPK_ZaselenieStudents
PRIMARYKEYCLUSTERED (NumberZaselenia)
;
ALTERTABLEObsejitiaADDCONSTRAINTFK_ComendantCode
FOREIGNKEY (ComendantCode) REFERENCESComendants (ComendantCode)
;
ALTERTABLERoomsADDCONSTRAINTFK_NumberObsejitia
FOREIGNKEY (NumberObsejitia) REFERENCESObsejitia (NumberObsejitia)
;
ALTERTABLEZaselenieStudentsADDCONSTRAINTFK_RoomCode
FOREIGNKEY (RoomCode) REFERENCESRooms (RoomCode)
;
ALTERTABLEZaselenieStudentsADDCONSTRAINTFK_StudentCode
FOREIGNKEY (StudentCode) REFERENCESStudents (StudentCode)
;
Размещено на Allbest.ru
...Подобные документы
Анализ предметной области. Перечень хранимой информации: таблицы, поля, типы. Выделение сущностей, атрибутов, ключей, связей. Начальное заполнение данными БД. Создание и запуск базовых запросов. Проектирование базы данных в среде Enterprise Architect.
курсовая работа [1,6 M], добавлен 16.02.2016Анализ предметной области - магазин "Канцелярские товары". Проектирование и реализация учебной базы данных магазина. Перечень хранимой информации: таблицы, поля, типы. Выделение сущностей, атрибутов, ключей, связей. Создание и запуск базовых запросов SQL.
курсовая работа [2,4 M], добавлен 09.08.2015Анализ предметной области - магазин "Канцелярские товары". Проектирование и реализация базы данных в MS SQL Server. Перечень хранимой информации: таблицы, поля, типы. Моделирование предметной области. Выделение сущностей, атрибутов, ключей, связей.
курсовая работа [2,2 M], добавлен 05.02.2015Разновидности систем управления базами данных. Анализ предметной области. Разработка структуры и ведение базы данных. Структурированный язык запросов SQL. Организация выбора информации из базы данных. Общие принципы проектирования экранных форм, макросов.
курсовая работа [3,1 M], добавлен 26.02.2016Осуществление анализа предметной области и определение модели базы данных. Реализация базы данных в среде Microsoft Access. Создание и исследование формы ввода информации, запросов с условиями выбора, диаграмм по результатам вычислений и отчетов.
курсовая работа [246,1 K], добавлен 19.10.2013Разработка базы данных для предметной области "Подразделения предприятия – Рабочие помещения". Описание используемых данных, предметной области и результатной информации. Создание запросов, форм и отчетов в базе данных. Описание построения диаграмм.
курсовая работа [5,6 M], добавлен 24.07.2014Анализ предметной области. Требования, предъявляемые при составлении базы данных гостиницы. Реализация процесса поиска необходимой информации. Формирование таблиц, запросов, отчетов и вывод их на печать. Редактирование, добавление и хранение данных.
курсовая работа [2,0 M], добавлен 07.02.2016Проведение системного анализа предметной области и разработка проекта по созданию базы данных для хранения информации о перевозках пассажиров и грузов. Обоснование выбора системы управления базой данных и разработка прикладного программного обеспечения.
курсовая работа [1,1 M], добавлен 18.07.2014Разработка проекта базы данных для сбора данных в компании, владеющей сетью ресторанов, с целью ведения контроля над заведениями, накопления и хранения информации о деятельности каждого ресторана в сети. Реализация запросов для получения информации.
курсовая работа [501,7 K], добавлен 02.12.2014Назначение для информационной системы OpenPOS для автоматизации рабочих процессов в заведениях общественного питания. Состав и структура исходных данных. Основные сведения о предметной области, ее моделирование. Создание и запуск базовых запросов SQL.
курсовая работа [2,2 M], добавлен 28.01.2016База данных для работников деканата для хранения сведений о группах и студентах и о результатах текущей сессии. Построение инфологической модели предметной области. Создание базы данных в Microsoft Access 2000. Создание элементов управления базой данных.
курсовая работа [4,5 M], добавлен 22.08.2009Особенности разработки инфологической модели и создание структуры реляционной базы данных. Основы проектирования базы данных. Разработка таблиц, форм, запросов для вывода информации о соответствующей модели. Работа с базами данных и их объектами.
курсовая работа [981,4 K], добавлен 05.11.2011Сущности и функциональные зависимости базы данных. Атрибуты и связи. Таблицы базы данных. Построение ER-диаграммы. Организация ввода и корректировки данных. Реляционная схема базы данных. Реализация запросов, получение отчетов. Защита базы данных.
курсовая работа [2,4 M], добавлен 06.02.2016Создание модели "сущность-связь" и нормализация данных средствами программы Microsoft Access. Идентификация объектов предметной области и отношений между ними, разработка структуры физической модели, запросов и отчетов базы данных о студентах ВУЗа.
контрольная работа [742,8 K], добавлен 08.06.2011Базы данных - важнейшая составная часть информационных систем. Проектирование базы данных на примере предметной области "Оргтехника". Сбор информации о предметной области. Построение информационно-логической модели данных. Разработка логической структуры.
курсовая работа [318,6 K], добавлен 24.12.2014Создание программ, позволяющих создавать базы данных. Создание таблицы базы данных. Создание схемы данных. Создание форм, отчетов, запросов. Увеличение объема и структурной сложности хранимых данных. Характеристика системы управления базой данных Access.
курсовая работа [2,1 M], добавлен 17.06.2013Процесс создания и определение задач полнофункциональной системы управления базами данных. Разработка структуры таблиц, хранящих данные и формирование запросов. Построение форм для ввода и просмотра информации в запросах и создание необходимых отчетов.
курсовая работа [1,1 M], добавлен 11.09.2010Разработка базы данных с информацией о сотрудниках, товарах, со справочником типов товаров средствами системы управления базами данных MySQL с помощью SQL-запросов. Разработка инфологической модели предметной области. Структура таблиц, полей базы данных.
контрольная работа [648,7 K], добавлен 13.04.2012Структура таблицы и типы данных. Ввод данных в ячейки таблицы. Создание запросов на выборку, удаление, обновление и добавление записей, на создание таблицы. Основное различие между отчетами и формами, их назначение. Создание отчетов для базы данных.
курсовая работа [1,9 M], добавлен 17.06.2014Основы проектирования базы данных (БД). Модели, типы и функциональные возможности БД. Практическая разработка БД для горнолыжной базы. Сохранение данных в таблицах. Типы запросов как средства выбора необходимой информации. Создание отчетов и макросов.
курсовая работа [53,3 K], добавлен 12.06.2014