на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Создание базы данных
p align="left">Создатель реляционной модели данных Эдгар Кодд, Кристофер Дейт и их сторонники указывают на то, что SQL не является истинно реляционным языком. В частности они указывают на следующие проблемы SQL[3]:

А) Повторяющиеся строки

Б) Неопределённые значения (nulls)

В) Явное указание порядка колонок слева направо

Г) Колонки без имени и дублирующиеся имена колонок

Д) Отсутствие поддержки свойства «=»

Е) Использование указателей

Ж) Высокая избыточность

В опубликованном Кристофером Дейтом и Хью Дарвеном Третьем Манифесте они излагают принципы СУБД следующего поколения и предлагают язык Tutorial D, который является подлинно реляционным.

2) Сложность

Хотя SQL и задумывался, как средство работы конечного пользователя, в конце концов он стал настолько сложным, что превратился в инструмент программиста.

4) Отступления от стандартов

Несмотря на наличие международного стандарта ANSI SQL-92, многие компании, занимающиеся разработкой СУБД (например, Oracle, Sybase, Microsoft, MySQL AB), вносят изменения в язык SQL, применяемый в разрабатываемой СУБД, тем самым отступая от стандарта. Таким образом появляются специфичные для каждой конкретной СУБД диалекты языка SQL.

5) Сложность работы с иерархическими структурами

Ранее SQL не предлагал стандартного способа манипуляции древовидными структурами. Некоторые поставщики СУБД предлагали свои решения. Например, Oracle использует выражение CONNECT BY. В настоящее время в качестве стандарта принята рекурсивная конструкция WITH.

Для управления базой данных используется СУБД. Система управления базами данных (СУБД) -- специализированная программа (чаще комплекс программ), предназначенная для организации и ведения базы данных. Основные функции СУБД:

1) управление данными во внешней памяти (на дисках);

2) управление данными в оперативной памяти с использованием дискового кэша;

3) журнализация изменений, резервное копирование и восстановление базы данных после сбоев;

4) поддержка языков БД (язык определения данных, язык манипулирования данными).

Обычно современная СУБД содержит следующие компоненты:

1) ядро, которое отвечает за управление данными во внешней и оперативной памяти и журнализацию,

2) процессор языка базы данных, обеспечивающий оптимизацию запросов на извлечение и изменение данных и создание, как правило, машинно-независимого исполняемого внутреннего кода,

3) подсистему поддержки времени исполнения, которая интерпретирует программы манипуляции данными, создающие пользовательский интерфейс с СУБД

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

2. Конструкторская часть

2.1 Структура БД

БД состоит из 7 таблиц: 5 по 5 факультетам, содержащие список групп, относящихся к конкретному факультету(КМК.db, МТК.db, СЭК.db, ФНК.db, ЭИУК.db), одна содержащая список 5 факультетов(Facultets.db), и еще одна - главная, содержащая подробные сведения о каждом студенте, обучающемся в КФ МГТУ(Students.db). Программа, созданная для управления БД, будет брать и отображать сведения, как правило, лишь из последней таблицы, к остальным же будет обращаться при сортировке, нумерации, редактировании данных в БД и прочих процедурах. Таблица Facultets неизменна.

Таблица Students содержит следующие поля: Номер, ФИО, Факультет, Курс, Группа, Поощрения, Сумма, Дата выдачи, Примечание, Поездки, Примечания.

2.2 Разработка конвертера таблицы Excel в БД

Одна из первых проблем, появившихся при формировании БД, - это перенос существующих данных из простой таблицы в Excel в файл с расширением *.db. Перенести данные ручным набором не представлялось возможным из-за большого количества записей (около 3500). Поэтому помимо основного проекта DataBase был создан проект Converter. Суть его работы заключается в переносе содержимого из файла с расширением *.csv (файл такого формата представляет из себя набор ячеек таблицы Excel, разделенных между собой точкой с запятой), в таблицу Students. Тонкость работы этой программы в том, что работать она будет только для конкретного csv-файла (отформатированного конкретным образом). На выходе мы должны будем получить таблицу Students, в состав которой уже входят все студенты КФ МГТУ, т.е. с заполненными полями Номер, ФИО, Факультет, Курс, Группа. Помимо того, в каждую из 5 баз данных (КМК, МТК, СЭК, ФНК, ЭИУК) запишется список всех групп данного факультета.

2.3 Разработка интерфейса главной формы СУБД

Главная форма для отображения БД использует компонент DBGrid, а для управления БД - главное меню, имеющее следующие пункты: Файл(Функции поиска в БД), Правка (Редактирование информации в БД), Дополнительно (Процедура перевода всех записей в БД на один семестр вперед) и Справка (Открытие файла ReadMe, см. Инструкцию пользователя).

2.4 Разработка модуля отображения БД

При запуске программы мы должны получить наибольшее возможное рабочее пространство занятое компонентом DBGrid, заполненным следующим образом: сортировка осуществляется по полям Факультет, Курс, Группа, и уже в каждой группе происходит отдельная сортировка по фамилии и затем нумерация внутри группы. Для этого используется один компонент Table (отображение всей таблицы Students) и 3 компонента Query, с помощью которых мы будем осуществлять SQL-запросы для различных операций с БД (в том числе - сортировка и нумерация). Для приведения компонента DBGrid к нужному нам виду используется следующая процедура:

procedure Vid_DBGrid;

begin

With Form1.DBGrid1 do begin

//Выравниваем ширину столбцов

Columns[0].Width:=20;

Columns[1].Width:=250;

Columns[3].Width:=30;

Columns[5].Width:=100;

Columns[6].Width:=55;

Columns[7].Width:=90;

Columns[8].Width:=250;

Columns[9].Width:=100;

Columns[10].Width:=230;

//Делаем столбец поощрения всплывающим списком

With Columns[5].PickList do begin

Add('Мат. помощь');

Add('Соц. стипендия');

Add('Соц. выплаты');

Add('Другие поощрения');

end;

//Делаем столбец поездки всплывающим списком

With Columns[9].PickList do begin

Add('Москва');

Add('Снакт-Петербург');

Add('Юг');

end;

end;

end;

Для сортировки и нумерации БД каждый раз при открытии формы выполняется следующая процедура:

//Открываем БД

Table1.Active:=true;

//Открываем БД с факультетами

With Query3 do begin

Close;

SQL.Clear;

SQL.Add('SELECT *');

SQL.Add('FROM Facultets.db');

Open;

end;

//счетчик записей

n:=0;

//от 1 до количества факультетов

for i:=1 to Query3.RecordCount do begin

//Открываем БД, название которой соответсвует полю факультет текущей записи в БД Факультеты

With Query2 do begin

Close;

SQL.Clear;

SQL.Add('SELECT *');

SQL.Add('FROM '+Query3['Факультет']+'.db');

Open;

end;

//От 1 до количества групп на факультете

for j:=1 to Query2.RecordCount do begin

//Открываем БД студенты и считываем только те записи, в которых поле группа соответствует полю группа в текущей записи БД Факультет

With Query1 do begin

Close;

SQL.Clear;

SQL.Add('SELECT *');

SQL.Add('FROM Students.db');

SQL.Add('WHERE Группа LIKE "'+Query2['Группа']+'"');

SQL.Add('ORDER BY ФИО');

Open;

end;

//От 1 до количества студентов в группе

for k:=1 to Query1.RecordCount do begin

//Добавляем в конец БД студенты запись с порядковым номером студента внутри группы

Table1.AppendRecord([k,Query1['ФИО'], Query1['Факультет'], Query1['Курс'], Query1['Группа'], Query1['Поощрения'], Query1['Сумма'], Query1['Дата выдачи'], Query1['Примечание'], Query1['Поездки'], Query1['Примечания']]);

Query1.Next;

n:=n+1;

end;

//Переходим на следующую группу

Query2.Next;

end;

//Переходим на следующий факультет

Query3.Next;

end;

//Возвращаемся к началу БД студенты

Table1.First;

//Удаляем все записи, кроме недавно добавленных

for i:=1 to n do

Table1.Delete;

2.5 Разработка средств редактирования БД

Также в курсовом проекте предусмотрено добавление и удаление студентов, а также добавление и удаление групп.

Добавление студентов осуществляется в новом окне, а сама процедура добавления заключается в нижеприведенном коде:

//Добавляем запись, поля которой соответствуют текущим значениям 3-х списков и полю Edit1 в конец БД

Form1.Table1.AppendRecord([1,Edit1.Text,ComboBox1.Items[ComboBox1.ItemIndex],ComboBox2.Items[ComboBox2.ItemIndex],ComboBox3.Items[ComboBox3.ItemIndex]]);

Form1.Table1.First;

Затем заново происходит сортировка и нумерация всей БД, чтобы сразу же поставить новую запись именно в то место таблицы Students, где она должна находиться.

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

2.6 Разработка системы поиска информации в БД

В курсовой работе представлено 2 варианта поиска: простой и расширенный. Простой поиск выводит в DBGrid одну запись, поле ФИО которой равно введенному в строке поиска тексту или же начинается с тех же символов.

Примечательность простого поиска в том, что он ищет все записи, соответствующие запросу, но выводит сначала лишь первую, а по кнопке «Искать далее» переходит на следующую запись. По окончании простого поиска в окне появляются 3 новые кнопки: удалить, отобразить все и добавить информацию. Первая удаляет запись, отображающуюся на данный момент, посредством следующего кода:

DataSource2.DataSet:=Table1;

Vid_DBGrid;

Table1.First;

//Находим в БД студенты удаляемую запись

for i:=1 to Table1.RecordCount do begin

if Table1['ФИО']=Query1['ФИО'] then begin

Query1.Close;

s:=Table1['Группа'];

Table1.Delete;

break;

end;

Table1.Next;

end;

//Для всех записей за ней из той же группы уменьшаем порядковый номер на 1

b:=true;

While b=true do

if Table1['Группа']=s then begin

Table1.Edit;

Table1['Номер']:=Table1['Номер']-1;

Table1.Post;

Table1.Next;

end else

b:=false;

Вторая кнопка отображает в DBGrid вновь все записи, при этом осуществляя Refresh всех записей. Третья кнопка вызывает окно добавления информации (см. рис.1), предназначенное для добавления информации к тем студентам, которые получают более одного поощрения или ездили более, чем в одну поездку. Примечательность работы этого окна заключается том, что в поле Сумма будет выводиться общая сумма, полученная студентом с момента выдачи первого поощрения.

рис.1 Окно добавления информации

2.7 Разработка функции перехода в следующий семестр

Один раз в семестр одно из полей нашей БД (Группа) должно меняться, раз в год меняется еще одно поле (Курс), а те записи, значение поля Группа которых заканчивается буквой “Д” (ЭВМ-1Д), должны удаляться из БД, но сохраняться в еще каком-нибудь месте.

Реализовано это в пункте меню Доплонительно Перейти в след. Семестр. Выпускники при выполнении этой операции удаляются из БД и записываются в файл с расширением *.csv.

procedure TForm1.N14Click(Sender: TObject);

var

i,j,k:integer;

s,st,str:string;

f:textfile;

begin

if MessageDlg('Вы уверены, что хотите перевести всех студентов в следующий семестр?',mtConfirmation,[mbOK, mbCancel],0)=mrOK then begin

assignfile(f,'Выпускники'+DateToStr(Now)+'.csv');

rewrite(f);

for i:=1 to Table1.RecordCount do begin

s:=Table1['Группа'];

j:=0;

str:='';

repeat

j:=j+1;

str:=str+s[j];

until s[j]='-';

st:='';

for k:=j+1 to length(s) do

st:=st+s[k];

if st[length(st)]='Д' then begin

st:=inttostr(Table1['Номер'])+';'+Table1['ФИО']+';'+Table1['Факультет']+';';

st:=st+inttostr(Table1['Курс'])+';'+Table1['Группа']+';';

if Table1['Поощрения']=null then

st:=st+';'

else

st:=st+Table1['Поощрения']+';';

if Table1['Дата выдачи']=null then

st:=st+';'

else

st:=st+Table1['Дата выдачи']+';';

if Table1['Сумма']=null then

st:=st+';'

else

st:=st+Table1['Сумма']+';';

if Table1['Примечание']=null then

st:=st+';'

else

st:=st+Table1['Примечание']+';';

if Table1['Поездки']=null then

st:=st+';'

else

st:=st+Table1['Поездки']+';';

if Table1['Примечания']=null then

st:=st+';'

else

st:=st+Table1['Примечания']+';';

writeln(f,st);

Table1.Delete;

end else begin

j:=strtoint(st) div 10;

if j<11 then begin

with Query2 do begin

Close;

SQL.Clear;

SQL.Add('SELECT *');

SQL.Add('FROM '+Table1['Факультет']+'.db');

SQL.Add('WHERE Группа LIKE "'+Table1['Группа']+'"');

Open;

end;

Table1.Edit;

Table1['Группа']:=str+inttostr(j+1)+s[length(s)];

if (j mod 2)=0 then

Table1['Курс']:=Table1['Курс']+1;

Table1.Post;

if Query2['Группа']<>'' then begin

Query2.Edit;

Query2['Группа']:=Table1['Группа'];

Query2.Post;

end;

Table1.Next;

end else

if j=11 then begin

with Query2 do begin

Close;

SQL.Clear;

SQL.Add('SELECT *');

SQL.Add('FROM '+Table1['Факультет']+'.db');

SQL.Add('WHERE Группа LIKE "'+Table1['Группа']+'"');

Open;

end;

Table1.Edit;

Table1['Группа']:=str+s[length(s)]+'Д';

if (j mod 2)=0 then

Table1['Курс']:=Table1['Курс']+1;

Table1.Post;

if Query2['Группа']<>'' then begin

Query2.Edit;

Query2['Группа']:=Table1['Группа'];

Query2.Post;

end;

Table1.Next;

end;

end;

end;

closefile(f);

end;

end;

3. Технологическая часть

3.1 Системные требования и характеристики программы

1) ОС: Widows 95, 98, 2000, NT, Me, XP, Vista

2) 128 Мб ОЗУ, 1.7 ГГц

3) мышь, клавиатура

4) наличие установленной программы BDE Administrator

3.2 Руководство администратора базы данных.

Перед началом работы с базой данных необходимо установить программу BDE Administrator (рис. 1) Эта утилита может устанавливаться как с Delphi так и без него. В этой программе необходимо создать псевдоним базы и указать её местоположение. Для этого заходим в меню Object и выбираем New. В появившемся окне New Database Alias выбираем Standard и нажимаем OK.

рис. 1 Главное окно программы BDE Administrator

В левой колонке вводим псевдоним базы данных. В нашем случае это Profkom. Расположение базы нужно указать в поле Path.

3.3 Руководство пользователя

рис.2 Главное окно программы

На рисунке 2 показано главное окно программы. В нём отображаются поля: “Номер”- номер студента по журналу, “ФИО”- фамилия, имя и отчество студента, ”Факультет”- шифр факультета на котором обучается данный студент, ”Курс” - номер курса на котором обучается студент, соответствующий году обучения студента в университете, “Группа”- шифр и номер группы обучающегося, “Поощрения”- различные поощрения, выдаваемые иногородним студентам, учащимся с тяжёлым материальным положением и так далее, “Сумма”- сумма выданного поощрения, “Дата выдачи”- число, месяц и год когда выдано поощрение, “Примечание”- любая дополнительная информация о выданном поощрении, “Поездки”- поездки от профкома студентов КФ МГТУ и “Примечания”- информация о поездке. Любые изменения, производимые в этом окне, будут сохранены автоматически, но только тогда, когда курсор после необходимых изменений будет переставлен на любую другую ячейку.

Добавление студента в базу данных.

рис. 3 Добавление студента в базу данных

Чтобы добавить студента в таблицу необходимо выбрать меню “Правка”- “Добавить”. В появившемся окне (рис. 3) из выплывающего списка нужно выбрать факультет, курс и группу добавляемого студента. В поле ввода нужно вписать фамилию имя и отчество учащегося. После окончания ввода, нужно нажать кнопку “Добавить”.

Простой поиск студента в базе данных

рис. 4 Простой поиск студента в базе данных

Под “простым поиском” понимается поиск только одного человека в базе данных с возможностью изменения данных о нём. Чтобы воспользоваться простым поиском, необходимо нажать “Файл”- “простой поиск” или воспользоваться быстрым запуском. Для быстрого запуска необходимо одновременно нажать кнопки “Ctrl” и ”F”. В появившемся окне (рис. 4) в поле ввода вводится фамилия, имя и отчество студента после чего нужно нажать кнопку “Искать”. После этих действий отобразиться будет выведена вся информация о студенте. Если в поле ввода фамилия имя отчество были введены не полностью (например, только фамилия) и программа вывела не нужного студента то нужно нажимать кнопку “Искать далее” пока нужный студент не будет найден. Если студента с таким ФИО нет в базе, то будет выведено соответствующее окно с надписью “Ничего не найдено” (рис. 5) Чтобы вы вернуться к главному окну программы нужно нажать кнопку “Отобразить все”.

рис. 5 Окно ошибки, возникающее, если студент не был найден

Удаление студента из базы данных:

рис. 6 Удаление студента из базы данных

Удаление студента производиться с помощью простого поиска (“Файл” - “Простой поиск”). В появившемся окне (рис. 4) необходимо ввести фамилию имя и отчество студента. Но если полностью ФИО неизвестно, то можно ввести только фамилию и имя или только фамилию и даже только первые буквы фамилии. Когда нужный студент найден, нажмите “ОК”. Для его удаления необходимо нажать “Удалить” и в появившемся окне подтверждения удаления нажать “ОК”.

Расширенный поиск

рис. 7 Расширенный поиск

Под расширенным поиском понимается вывод нескольких студентов по определённому общему для них признаку. Из выплывающих списков нужно выбрать признаки, по которым будут выбираться студенты, после чего нужно нажать кнопку “Поиск”. Чтобы вы вернуться к главному окну программы нужно нажать кнопку “Отобразить все”.

Добавление информации о студенте, находящемся в базе данных.

Добавление информации о студенте производится с помощью меню “Файл”- “Простой поиск”. В окне простого поиска (рис. 8) нужно вести ФИО студента и нажимать “Искать далее” пока нужный студент не будет найден. После того, как нужный студент найден, чтобы добавить ему информацию, нужно нажать кнопку “Добавить информацию”.

рис. 8 Добавление информации о студенте

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

Добавление шифра группы студентов в базу данных

рис. 9 Добавление шифра группы студентов в базу данных

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

Перевод всех студентов в следующий семестр.

рис. 10 Перевод всех студентов в следующий семестр

Для перевода студентов в следующий семестр, необходимо нажать “Дополнительно”- “Перевести в следующий семестр”. В появившемся окне (рис. ) для подтверждения нажмите “ОК”. Если при этом увеличивается значение поля “Курс”, то записи, значение этого поля которых равнялось 6, удалятся из базы данных и переместятся в файл с расширением *.csv. Находиться он будет в папке с базой данных, а откроется в Microsoft Office Excel.

Страницы: 1, 2



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.