Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BDlab / 2_sql_server.docx
Скачиваний:
73
Добавлен:
18.03.2015
Размер:
62 Кб
Скачать
☆

4. Порядок выполнения работы

А. Создание и заполнение базы данных

1. Запустить Microsoft SQL Server:

Пуск | Программы | Microsoft SQL Server 2005 | Среда SQL Server Management Studio

Express ► ф. Соединение с сервером | Имя сервера ← выбр. <Обзор дальше…> ►

ф. Выбор серверов | Выберите сервер для соединения: | раскр. Компонент Database

Engine | выр. Имя_сервера \ SQLEXPRESS | кн. OK ►

ф. Соединение с сервером | Проверка подлинности: ← выбр. Проверка подлинности

Windows; кн. Соединить

2. Создать новую базу данных

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов;

раскр. [+] Имя сервера\SQLEXPRESS (SQL Server 9.0 – …) |

раскр. [+] Базы данных; прав. кн. мыши на Базы данных | Создать базу данных… ►

(ф. Создание базы данных | Имя базы данных ← Education; кн. OK) ►

ф. Обозреватель объектов | раскр [+] Education

(если база данных не появилась, то пр. кн. мыши на Базы данных ← выбр. Обновить)

3. В базе данных с помощью конструктора таблиц создать структуру таблицы Students (справочник студентов):

– создать таблицу Students

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов |

Базы данных | Education | пр. кн. мыши на Таблицы | Создать таблицу… ►

(ф. Таблица – dbo.Table_1 | (ф. Свойства | Имя ← Students);

– задать поле идентификатора студента (счетчик, первичный ключ):

ф. Таблица – dbo.Table_1 |

Имя столбца ← stud_ID; Тип данных ← int; снять Разрешить значения null;

ф. Свойства столбцов | раскр. Спецификация идентифицирующего столбца |

(Является идентифицирующим столбцом) ← Да; Начальное значение ← 1;

Приращение ← 1; (Панель инструментов | кн. Задать первичный ключ ►

метка ключа в начале строки).

– задать поле номера зачетной книжки (уникальное, 6 цифр):

Имя столбца ← no_zk; Тип данных ← char(10), изменить 10 на 6;

снять Разрешить значения null;

Панель инструментов | кн. Управление индексами и ключами ►

ф. Индексы и ключи | кн. Добавить ►новый элемент IX_Students*

ф. Изменение свойств нового уникального ключа |

Общие | Столбцы | кн. […] ► ф. Столбцы индекса | Имя столбца ← выбр. no_zk; кн. OK;

Общие | Является уникальным ← выбр. Да;

Идентификация | (Имя) ← Unique_no_zk; кн. Закрыть.

– задать поля фамилии, имени, отчества (строковые):

Имя столбца ← fam; Тип данных ← varchar(50), изменить 50 на 20;

снять Разрешить значения null;

аналогично – для имени (im) и отчества (ot);

– создать уникальный индекс ФИО (Unique_fio) из полей фамилия (fam), имя (im), отч (ot):

Панель инструментов | кн. Управление индексами и ключами ►

ф. Индексы и ключи | кн. Добавить ►новый элемент IX_Students*

ф. Изменение свойств нового уникального ключа |

Общие | Столбцы | кн. […] ► ф. Столбцы индекса |

Имя столбца ← выбр. fam; след. строка | Имя столбца ← выбр. im;

след. строка | Имя столбца ← выбр. ot; кн. OK;

Общие | Является уникальным ← выбр. Да;

Идентификация | (Имя) ← Unique_fio; кн. Закрыть.

– задать поле кода специальности spec (до 7 русских букв):

Имя столбца ← spec; Тип данных ← varchar(50), изменить 50 на 7;

снять Разрешить значения null;

Панель инструментов | кн. Управление проверочными ограничениями ►

ф. Проверочные ограничения | кн. Добавить ►новый элемент CK_Students*

ф. Изменение свойств нового проверочного ограничения… |

Общие | Выражение ← spec >= 'А' AND spec <= 'я';

Идентификация | (Имя) ← Russian_spec; кн. Закрыть.

– задать поле курса kurs (одна цифра от 1 до 6):

Имя столбца ← kurs; Тип данных ← varchar(50), изменить 50 на 1;

снять Разрешить значения null;

Панель инструментов | кн. Управление проверочными ограничениями ►

ф. Проверочные ограничения | кн. Добавить ►новый элемент CK_Students*

ф. Изменение свойств нового проверочного ограничения… |

Общие | Выражение ← kurs >= 1 AND kurs <= 6;

Идентификация | (Имя) ← Kurs_from_1_to_6; кн. Закрыть.

– задать поле номера группы gr (две цифры):

Имя столбца ← gr; Тип данных ← varchar(50), изменить 50 на 2;

снять Разрешить значения null;

Панель инструментов | кн. Управление проверочными ограничениями ►

ф. Проверочные ограничения | кн. Добавить ►новый элемент CK_Students*

ф. Изменение свойств нового проверочного ограничения… |

Общие | Выражение ← gr >='01' AND gr <= '99';

Идентификация | (Имя) ← Gr_from_01_to_99; кн. Закрыть.

– задать поле даты рождения data_r:

Имя столбца ← data_r; Тип данных ← datetime; не снимать Разрешить значения null.

– задать поле биографии biogr (мемо):

Имя столбца ← biogr; Тип данных ← text; не снимать Разрешить значения null;

– сохранить структуру таблицы одним из трех способов: сочетанием клавиш [Ctrl + S], кн. Файл | Сохранить или кн. «Сохранить» на панели инструментов.

4. Аналогичным образом создать структуру таблицы Subjects (справочник предметов):

– создать новую таблицу базы данных Education

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов |

Базы данных | Education | пр. кн. мыши на Таблицы | Создать таблицу… ►

(ф. Таблица – dbo.Table_1

– задать имя таблицы Subjects:

ф. Свойства | Имя ← Subjects

– сохранить таблицу Subjects;

– задать поле идентификатора предмета predm_ID (счетчик, первичный ключ).

ф. Таблица – dbo.Table_1 |

Имя столбца ← predm_ID; Тип данных ← int; снять Разрешить значения null;

ф. Свойства столбцов | раскр. Спецификация идентифицирующего столбца |

(Является идентифицирующим столбцом) ← Да; Начальное значение ← 1;

Приращение ← 1; (Панель инструментов | кн. Задать первичный ключ ►

метка ключа в начале строки).

– аналогичным образом создать остальные поля таблицы:

– Название name (название предмета (строковое));

– Цикл cycle(цикл дисциплин, к которым относится предмет (строковое));

– Объем hrs (количество часов (числовое));

– Кафедра dept(название кафедры, на которой ведется преподавание предмета (строковое)).

– указать первичный ключ таблицы (поле predm_ID);

– для каждого из полей таблицы придумать ограничения на значения.

5. Аналогичным образом создать структуру таблицы Успеваемость (успеваемость студентов по предметам) ­– Uspev с полями:

– Student (идентификатор студента (тип такой же, как в таблицеСтуденты, но не счетчик));

– Predmet(идентификатор предмета (тип такой же, как в таблицеПредметы, но не счетчик));

– Ocenka(оценка (символ));

– Data (дата (дата)).

– ввести составной первичный ключ (поля идентификаторов студента и предмета):

ф. конструктора таблицы Uspev| кл. на полеStudent;

Ctrl + кл. на поле Predmet ►

выделены оба поля; (панель инстр. | кн. Ключевое поле) ► составной ключ готов;

– для каждого из полей таблицы придумать ограничения на значения.

6. Указать пользователя NT AUTHORITY\SYSTEM в качестве владельца базы данных Education

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов | Базы данных | пр. кн. мыши на Education | Свойства ► ф. Свойства базы данных - Education |

Выбор страницы ← Файлы; Владелец ← кн. […]►

ф. Выбор владельца базы данных | кн. Обзор… ►

ф. Поиск объектов | уст. [NT AUTHORITY\SYSTEM] | кн. OK ►

ф. Выбор владельца базы данных | кн. OK►

ф. Свойства базы данных - Education | кн. OK.

7. Связать таблицы, сделав таблицы студентов и предметов родительскими, а таблицу успеваемости – дочерней; установить правила ссылочной целостности: каскадное для удаления и изменения:

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов | Базы данных

| Education | раскр. Диаграммы баз данных ►ф. Microsoft SQL Server Management Studio |

кн. Yes; пр. кн. мыши на Диаграммы баз данных | Создать диаграмму баз данных►

ф. Добавление таблицы | выбр. Students ← кн. Добавить; выбр. Subjects ← кн. Добавить;

выбр. Uspev ← кн. Добавить; кн. Закрыть ►ф. Диаграмма – Имя сервера.Diagram_0*

(Students | ключ) перетащить на (Uspev) ► (ф. Таблицы и столбцы |

проверить соединяемые поля; кн. OK) ►ф. Отношение внешнего ключа |

Общие | раскр. Конструктор баз данных | Спецификация INSERT и UPDATE;

Обновить правило ← Каскадом; Удалить правило ← Каскадом; кн. OK;

Аналогичным образом установить связь между таблицами Subjects и Uspev и сохранить диаграмму.

8. Наполнить базу данных сведениями о студентах (не менее 5), предметах (не менее 3) и оценках (не менее 10). Освоить доступ к дочерним записям из родительской таблицы. Проверить работоспособность полей и таблиц подстановок. Освоить приемы изменения и удаления полей и записей. Проверить работоспособность ограничений значений полей, уникальности и др., предусмотренные при задании структуры базы данных. Проверить работоспособность ссылочной целостности, удаляя, изменяя и вставляя данные.

Б. Представления, хранимые процедуры, триггеры

1. Создать просмотр для вывода кратких сведений о студентах (идентификатор, номер зачетки, фамилия и инициалы, идентификатор группы):

– создать представление Students_info:

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов | Базы данных

| Education | пр. кн. мыши на Представления | Создать представление… ►

ф. Добавление таблицы | выбр. Students; кн. Добавить; кн. Закрыть;

ф. Представление – dbo.View_1*

(1-я стр. | Столбец ← stud_ID); (2-я стр. | Столбец ←no_zk);

(3-я стр. | Столбец ← RTRIM(fam) + ' ' + SUBSTRING(im; 1; 1) + '.' + SUBSTRING(ot; 1; 1) + '.'; Псевдоним ←fio);

(4-я стр. | Столбец ← RTRIM(spec) + '-' + kurs + gr; Псевдоним ←gruppa);

кл. [Ctrl + S] ►ф. Выбор имени | Введите имя представления ← Students_info.

– проверить работоспособность представления:

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов | Базы данных

| Education | Представления | пр. кн. Students_info |

Открыть представление ► результаты на экране.

2. Аналогичным образом создать представление для вывода сведений об успеваемости студентов из таблицы успеваемости с указанием сведений о студенте из запроса Students_infoи сведений о предмете из таблицы предметов. Результат должен содержать следующие поля: ФИО студента, Группа, Предмет, Дата, Оценка. Назвать представление какStudents_uspev.

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

– создать хранимую процедуру GetStudentInfo

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов |

Базы данных | Education | Программирование | пр. кн. мыши на Хранимые процедуры |

Создать хранимую процедуру…► ф. Имя сервера.Education – SQLQuery1.sql |

Панель инструментов | кн. Указать значения для параметров шаблона ►

ф. Задание значений для параметров шаблона | Параметр Author;

Значение ← Номер группы; Параметр Create Date; Значение ← Текущая дата;

Параметр Author; Значение ← Номер группы; Параметр Description; Значение ← Краткие

сведения о студенте; Параметр Procedure_Name; Значение ← GetStudentInfo;

Параметр @Param1; Значение ← @zk; Параметр Datatype_For_Param1;

Значение ← char(6); кн. OK;

– ввести программный код

ф. Имя сервера.Education – SQLQuery1.sql | удалить строки , @p2 int = 0;

вместо строки SELECT @zk, @p2 ввести код:

SELECT stud_ID, RTRIM(fam) + ' ' + SUBSTRING(im, 1, 1) + '.' + SUBSTRING(ot, 1, 1)

+ '.' AS fio, RTRIM(spec) + '-' + kurs + gr AS gruppa

FROM dbo.Students

WHERE no_zk = @zk

– сохранить хранимую процедуру под именем GetStudentInfo.sql.

– привязать хранимую процедуру к базе данных

Панель инструментов | кн. Выполнить

– проверить работоспособность хранимой процедуры:

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов |

Базы данных | Education | Программирование | Хранимые процедуры | пр. кн. мыши

на GetStudentInfo | Выбрать хранимую процедуру… | ф. Выполнение процедуры… |

Параметр @zk; Значение ← ввести любое значение номера зачетной книжки;

кн. OK ►результаты на экране.

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

– создать новый триггер CheckExams для таблицы успеваемости

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов |

Базы данных | Education | Таблицы | раскр. Uspev | пр. кн. Триггеры | Создать триггер… ►

ф. Имя сервера.Education – SQLQuery1.sql

Панель инструментов | кн. Указать значения для параметров шаблона ►

ф. Задание значений для параметров шаблона | Параметр Trigger_Name;

Значение ← CheckExams; кн. OK;

– удалить фрагмент

CREATE TRIGGER <Schema_Name, sysname, Schema_Name>.<Trigger_Name, sysname, Trigger_Name>

ON <Schema_Name, sysname, Schema_Name>.<Table_Name, sysname, Table_Name>

AFTER <Data_Modification_Statements, , INSERT,DELETE,UPDATE>

AS

BEGIN

-- SET NOCOUNT ON added to prevent extra result sets from

-- interfering with SELECT statements.

SET NOCOUNT ON;

-- Insert statements for trigger here

END

– ввести программный код триггера

CREATE TRIGGER CheckExams

ON Uspev FOR INSERT, UPDATE

AS

DECLARE

@stud INT,

@date DATETIME,

@count INT

BEGIN TRANSACTION

SELECT @stud=Student,@date=Data FROM INSERTED

SELECT @count = count(*)

FROM Uspev WHERE Student=@stud and Data=@date

IF(@count < 3)

BEGIN COMMIT TRANSACTION END

ELSE

BEGIN

RAISERROR(Студент может сдавать не более двух предметов в день',16,1)

ROLLBACK TRANSACTION

END

– сохранить триггер под именем CheckExams.sql.

– привязать триггер к базе данных

Панель инструментов | кн. Выполнить

– проверить работоспособность хранимой процедуры:

ф. Среда SQL Server Management Studio Express | ф. Обозреватель объектов |

Базы данных | Education | Таблицы | пр. кн. мыши на Uspev | ввести вторую запись

по студенту, сдающему второй предмет в один и тот же день; сделать попытку

перейти на следующую строку ►сообщение об ошибке с текстом из триггера.

В. .NET C# и Microsoft SQL Server

1. Запустить среду программирования MicrosoftVisualC#:

Пуск | Программы | Microsoft Visual C# 2008 Express Edition |

2. Создать новый проект и сохранить его под именем Education:

File | New Project ►ф. New Project | Visual Studio installed templates |

выбр. Windows Forms Application; Name ← Education; кн. OK.

3. Выбрать расположение файлов проекта:

ф. Form1.cs [Design] | кл. [Ctrl + S] ► ф. Save Project |

Location ← выбрать директорию, в которой будут размещены файлы проекта.

4. Найти набор компонентов для работы с базами данных на панели инструментов:

ф. Toolbox | найти элементы SQLConnection; SQLDataAdapter; SQLDataSource.

Если элементы не найдены, то добавить их:

пр. кн. мыши на панели инструментов Toolbox | выбр. Choose Items… ►

ф. Choose Toolbox Items… | вкл. .NET Framework Components | Filter ← SQL |

уст. SQLConnection; SQLDataAdapter; SQLDataSource; кн. OK. ►

найти на ф. Toolbox добавленные элементы.

5. Выбрать компонент OleDbConnection для установления соединения с базой данных:

Toolbox|Data|SQLConnection►выдел. лев. кн. мыши

и перетащить на форму ► на форме появится компонент с именем OleDbConnection1

6. Установить параметры соединения:

Выделить SQLConnection| ф.Properties| выбр.Connection String |

выбр. <New Connection…> ►ф. Add Connection | кн. Browse | ф. Select SQL Server Database File | выбр. файл Education.mdf, размещенный в директории C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\Data; кн. TestConnection► если появилось сообщение «Testconnectionsucceeded», то соединение установлено успешно; иначе перезагрузить компьютер и попробовать снова, не загружая при этомSQLServer; кн.OK.

7. Переименовать компонент соединения:

Выделить SQLConnection1 | ф. Properties | выбр. Name←Conn

8. Установить компонент SQLDataAdapterдля извлечения информации из базы данных:

Toolbox|Data|SQLDataAdapter►выдел. лев. кн. мыши и перетащить на форму ►

на форме появится компонент с именем SQLDataAdapter1

9. Настроить компонент SQLDataAdapter1:

ф. DataAdapter Configuration Wizard | ф. Choose Your Data Connection |

выбр. Education.mdf; кн. Next ►ф. Choose a Command Type | уст. Use SQL Statements;

кн. Next ►ф. Generate the SQL Statements | кн. Query Builder… ►

ф. Add Table | вкл. Views | выбр. Students_info; кн. Add; кн. Close ►

ф. Query Builder | табл. Students_info | уст. * (All Columns); кн. OK ►

ф. Generate the SQL Statements | кн. Next ► ф. Wizard Results | кн. Finish.

10. Переименовать компонент SQLDataAdapter1:

Выделить SQLDataAdapter1 | ф. Properties | выбр. Name←DataAdapter

11. Установить компонент SQLDataSetдля создания кэшированной копии базы данных в памяти:

Выделить DataAdapter| пр. кн. мыши | выбр.Generate Dataset | выбр. New ← DS |

кн. OK► на форме появится компонент с именемDS1

12. Заполнить компонент DataSetданными при загрузке приложения:

Выделить форму | ф. Properties| кн.Events| выбр.Load| дв. кл. лев. кн. мыши ►

ф. Form1.cs| в установленной позиции курсора ввести строкуDataAdapter.Fill(ds1);► перекл. на вкл.Form1.cs[Design]

13. Установить компонент DataGridViewдля отображения данных на форме:

Toolbox|Data|DataGridView►выдел. лев. кн. мыши и перетащить на форму ►

на форме появится серое прямоугольное поле (элемент dataGridView1); растянуть компонент по размерам формы

14. Переименовать компонент dataGridView1:

Выделить dataGridView1 | ф. Properties | выбр. Name←Grid.

15. Заполнить таблицу Grid:

Выделить Grid | ф. Properties | DataSource | Other Data Sources | Form1 List Instances | выбр. ds1;DataMember| выбр.Students_Info

16. Изменить размеры формы для вмещения всей таблицы Grid.

17. Установить на форму компонент BindingSource:

Toolbox|Data|BindingSource►выдел. лев. кн. мыши и перетащить на форму ►

на форме появится серое прямоугольное поле (элемент bindingSource1.

18. Переименовать компонент bindingSource1:

Выделить bindingSource1 | ф. Properties | выбр. Name←bdSource.

19. Установить на форму компонент BindingNavigatorдля навигации по записям:

Toolbox|Data|BindingNavigator►выдел. лев. кн. мыши и перетащить на форму ►

на форме появится серое прямоугольное поле (элемент bindingNavigator1); растянуть компонент по размерам формы

20. Переименовать компонент bindingNavigator1:

Выделить bindingNavigator1 | ф. Properties | выбр. Name←Navigator.

21. Привязать навигатор к источнику данных:

Выделить Navigator | ф. Properties | выбр. BindingSource← выбр.bdSource.

22. Проверить работоспособность приложения с помощью клавиши [F5].

Соседние файлы в папке BDlab