Приложение для работы с базой данных (dBase)
Этапы проектирования приложения (в данном случае - телефонного справочника), позволяющего создать базу данных, делать ее сортировку, производить новые записи или удаление полей. Листинг программы, которая производит индексацию и проверку базы данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 31.05.2012 |
Размер файла | 368,9 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Содержание
1. Введение
2. Постановка задачи
3. Практическая часть: Приложение телефонный справочник ПГТУ
Заключение
Список использованной литературы
Введение
С начала 60-70хх началось бурное развитие компьютеризации всех крупных промышленных центров. Ближе к 80-ым, компьютеры стали появляться и в учебных заведениях, предмету «Информатика» стали уделять огромное внимание. Стали появляться языки программирования высокого уровня такие, как Delphi, C++.
Далее пойдет речь о языке программирования Delphi и о базах данных.
В России Borland Delphi появляется в конце 1993 г. и сразу же завоевывает широкую популярность. Новые версии выходят практически каждый год. В них реализуются все новые мастера, компоненты и технологии программирования.
Действительно, процесс разработки в Delphi предельно упрощен. В первую очередь это относится к созданию интерфейса, на который уходит 80% времени разработки программы. Вы просто помещаете нужные компоненты на поверхность Windows-окна (в Delphi оно называется формой) и настраиваете их свойства с помощью специального инструмента (Object Inspector). С его помощью можно связать события этих компонентов (нажатие на кнопку, выбор мышью элемента в списке и т.д.) с кодом его обработки - и вот простое приложение готово. Причем разработчик получает в свое распоряжение мощные средства отладки (вплоть до пошагового выполнения команд процессора), удобную контекстную справочную систему (в том числе и по Microsoft API), средства коллективной работы над проектом, всего просто не перечислить. Вы можете создавать компоненты ActiveX без использования Microsoft IDL, расширять возможности web-сервера (скрипты на стороне сервера), практически ничего не зная об HTML, XML или ASP. Можно создавать распределенные приложения на базе СОМ и CORBA, Интернет- и intranet-приложения, используя для доступа к данным Borland DataBase Engine, ODBC-драйверы или Microsoft ADO. Появившаяся, начиная с Delphi 3, поддержка многозвенной технологии (multi-tiered) доступа к данным позволяет создавать масштабируемые приложения (относительно слабо зависящие от сервера БД) за счет перенесения методов обработки информации (бизнес-правил) на среднее звено.
Как уже говорилось ранее, в Delphi используется язык Object Pascal, который постоянно расширяется и дополняется Borland. Язык в полной мере поддерживает все требования, предъявляемые к объектно-ориентированному языку программирования. Как и положено строго типизированному языку, классы поддерживают только простое наследование, но зато интерфейсы могут иметь сразу несколько предков. К числу особенностей языка следует отнести поддержку обработки исключительных ситуаций (exceptions), а также перегрузку методов и подпрограмм (overload) в стиле C++. К числу удачных, на взгляд автора, относится также поддержка длинных строк в формате WideChar и AnsiChar. Последний тип (AnsiStrmg) позволяет использовать все прелести динамического размещения информации в памяти без всяких забот о ее выделении и сборке мусора Delphi делает это автоматически. Для поклонников свободного стиля программирования имеются открытые массивы, варианты и вариантные массивы, позволяющие размещать в памяти все, что душе угодно и смешивать типы данных.
Вы можете создавать свои собственные компоненты, импортировать ОСХ-компоненты, создавать <шаблоны> проектов и <мастеров>, создающих <заготовки> проектов. Мало того, Delphi предоставляет разработчику интерфейс для связи ваших приложений (или внешних программ) с интегрированной оболочкой Delphi (IDE).
Таким образом, вы можете использовать Delphi для создания как самых простых приложений, на разработку которых требуется 2-3 часа, так и серьезных корпоративных проектов, предназначенных для работы десятков и сотен пользователей. Причем для этого можно использовать самые последние веяния в мире компьютерных технологий с минимальными затратами времени и сил.
Ну, и одна из самых последних новостей от Inprise обещает, что в ближайшем будущем вы сможете переносить приложения, разработанные в Delphi, на платформу Linux. Более подробную информацию о Delphi можно получить на сайтах. Существует большое количество сайтов, посвященных Delphi, например <Королевство Delphi> - delphi.vitpc.com, Torry's Delphi Pages.Последний содержит большое число ссылок на ресурсы, связанные с Delphi. Ну а если вы уже давно знакомы с этим продуктом, то на сайте можно бесплатно протестироваться в качестве программиста Delphi и получить по почте сертификат.
Мощность и гибкость Delphi при работе с базами данных основана на низкоуровневом ядре - процессоре баз данных Borland Database Engine (BDE). Его интерфейс с прикладными программами называется Integrated Database Application Programming Interface (IDAPI).
В принципе, сейчас не различают эти два названия (BDE и IDAPI) и считают их синонимами. BDE позволяет осуществлять доступ к данным как с использованием традиционного record-ориентированного (навигационного) подхода, так и с использованием set-ориентированного подхода, используемого в SQL-серверах баз данных. Кроме BDE, Delphi позволяет осуществлять доступ к базам данных, используя технологию (и, соответственно, драйверы) Open DataBase Connectivity (ODBC) фирмы Microsoft. Но, как показывает практика, производительность систем с использованием BDE гораздо выше, чем оных при использовании ODBC. ODBC драйвера работают через специальный “ODBC socket”, который позволяет встраивать их в BDE.
Все инструментальные средства баз данных Borland - Paradox, dBase, Database Desktop - используют BDE. Все особенности, имеющиеся в Paradox или dBase, “наследуются” BDE, и поэтому этими же особенностями обладает и Delphi.
2. Постановка задачи
Необходимо создать приложение позволяющие создать базу данных, делать сортировку базы данных, производить новые записи или удаление полей базы данных.
3. Практическая часть: Приложение телефонный справочник ПГТУ
Что бы базу данных можно было переносить с компьютера на другой компьютер программа должна сама создавать алиасы. Так как dBase сохраняет базу данных в виде файла с названием базы dBase.DBF. Удобно не просто указывать путь доступа к таблицам базы данных, а использовать для этого некий заменитель - псевдоним, называемый алиасом. Он сохраняется в отдельном конфигурационном файле в произвольном месте на диске и позволяет исключить из программы прямое указание пути доступа к базе данных. Такой подход дает возможность располагать данные в любом месте, не перекомпилируя при этом программу. Кроме пути доступа, в алиасе указываются тип базы данных, языковый драйвер и много другой управляющей информации.
Ниже приведен листинг программы которая производит индексацию и проверку базы данных, а также изображение работы программы (PROGRESS.PAS)
Рис.1 Индексация базы данных
unit Progress;
interface
uses
Windows, SysUtils, Classes, Forms, Dialogs, StdCtrls,
DB, DBTables, Controls, ComCtrls, Registry,ShellApi, Messages, Graphics,
ExtCtrls ;
const
MM_BASE = WM_USER;
MM_OKSTART = MM_BASE + $1;
MM_DATAERROR = MM_BASE + $2;
MM_KeyDown = MM_BASE + $3;
MM_ENDTHREAD = MM_BASE + $4;
type
TMainForm = class(TForm)
ProgressBar1: TProgressBar;
lbPersent: TLabel;
Table2: TTable;
Image1: TImage;
Table1: TTable;
Timer1: TTimer;
lbMessage: TLabel;
procedure FormCreate(Sender: TObject);
procedure ProgressAOM (var MSG: tagMSG; var Handled: boolean);
procedure DataError(var Message: TMessage); message MM_DATAERROR;
procedure Timer1Timer(Sender: TObject);
procedure EndThread(var Message:TMessage); message MM_ENDTHREAD;
private
IsCanStart: boolean;
FStartTime: cardinal;
function SearchFile(FileName: string): boolean;
public
{ Public declarations }
end;
type EPhoneException = class (Exception);
var
MainForm: TMainForm;
tick: cardinal;
IsFirst : boolean = true;
const
sDataFile = 'Data.dbf';
sIndexFile = 'Data.mdx';
sBuffFile = 'DataBuff.dbf';
sBuffFile2 = 'DataBuff2.dbf';
sShortappname = 'LutskPhone';
sIniFile = 'options.ini';
sDataFileError = 'Ошибка при работе с базаю данных '+#10#13+
'Проверьте наличии файла базы!';
sBDEError = 'Ошибка работы с BDE!';
implementation
uses Teldov, Thread, ActiveX, ComObj, ShlObj;
{$R *.dfm}
procedure TMainForm.FormCreate(Sender: TObject);
var
mess: tagmsg;
handled :boolean;
begin
try
IsCanStart := false;
Top := (Screen.Height - Height) div 2-200;
Left := (Screen.Width - Width) div 2;
Application.OnMessage := ProgressAOM ;
// создание ярлыка, запись в реестр
try
Table1.TableName := sBuffFile;// Check BDE
Table1.CreateTable;
Table1.Close;
// ShowMessage(DBIgetErrorString);
DeleteFile(ExtractFilePath(ParamStr(0))+'/'+sBuffFile);
except
raise EPhoneException.Create(sBDEError); // error BDE
end;
if not SearchFile(sDataFile)
then raise EPhoneException.Create(sDataFileError);
if not SearchFile(sIndexFile)
then DataThread.create(false)
else IsCanStart := true;
except
on E: Exception do
begin
MessageDlg(e.Message, mtError, [mbOk],0);
PostMessage(MainFOrm.Handle, MM_DATAERROR, 0, 0);
end;
end;
Invalidate;
end;
procedure TMainForm.ProgressAOM (var MSG: tagMSG; var Handled: boolean);
begin
if MSG.message = MM_OKSTART then
begin
Timer1.Enabled := false;
Application.CreateForm(TPhoneForm, PhoneForm);
MainFOrm.Hide;
PhoneForm.Show;
Application.OnMessage := PhoneForm.AOM;
end;
end;
function TMainForm.SearchFile(FileName: string): boolean;
var
CurrFile : TSearchRec;
begin
if FindFirst(GetCurrentDir +'\'+FileName, faAnyFile, CurrFIle)=0
then Result := true
else Result := false;
end;
procedure TMainForm.DataError(var Message: TMessage);
begin
Close;
end;
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
if IsFirst then
begin
IsFirst := false;
FStartTime := 0; // GetTickCount;
end;
if IsCanStart then
begin
Tick := GetTickCount;
if Tick > (FStartTime + 0) // 1000
then PostMessage(MainFOrm.Handle, MM_OKSTART, 1, 0);
end
end;
procedure TMainForm.EndThread(var Message: TMessage);
begin
Image1.Visible := true;
Caption := '';
lbPersent.Visible := false;
lbMessage.Visible := false;
ProgressBar1.Visible := false;
IsCanStart := true;
end;
end.
После индексации базы данных и проверки её на существование запускается программа для работы с базой данных.
Рис.2 Главное окно программы
На рисунке 3 показан результат поиска в базе данных по номеру телефона.
Рис. 3 Поиск в базе данных по номеру телефона
База данных состоит из шести полей : номер телефона, ФИО, улица, номер дома, номер квартиры, категория.
Что соответствует полям в базе данных: номер телефона - NUMTEL, ФИО - FAMIL, улиуа - STREET, номер дома - HOUSE, номер квартиры - KVART, категория - PR09.
Ниже приведен листинг программы (TElDov.pas):
база данные справочник приложение
unit TElDov;
interface
uses
Windows, SysUtils, Thread, Progress, ExtCtrls, ComCtrls, Menus,
ToolWin, DBCtrls, ImgList, Classes, Controls, StdCtrls, Grids,
DB, DBTables, DBGrids, Forms, Messages, Dialogs,Clipbrd;
type
TPhoneForm = class(TForm)
DataSource1: TDataSource;
Table1: TTable;
StatusBar1: TStatusBar;
GroupBox1: TGroupBox;
Search: TButton;
ToolBar1: TToolBar;
ExitButton: TToolButton;
SearchButton: TToolButton;
DBGrid1: TDBGrid;
ImageList1: TImageList;
SortButton: TToolButton;
PopupMenu1: TPopupMenu;
ImageList2: TImageList;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
ToolButton8: TToolButton;
PopupMenu2: TPopupMenu;
DBNavigator1: TDBNavigator;
procedure FormCreate(Sender: TObject);
procedure SearchClick(Sender: TObject);
procedure AOM(var Msg: tagMSG; var Handled: Boolean);
procedure EraseButtonClick(Sender: TObject);
procedure MyPopupHandler(Sender: TObject);
procedure MyPopupHandler2(Sender: TObject);
procedure MyEditPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure MInMaxSize(var Message: TMessage); message WM_GETMINMAXINFO;
procedure N20Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure ExitButtonClick(Sender: TObject);
procedure SearchButtonClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
procedure CreatePopupFields;
procedure UpdateStatusBar;
procedure CalculateEditSize;
procedure SortMode (Sender: tObject);
procedure ReadIni;
procedure WriteIni; // Ini-file
public
end;
var
PhoneForm: TPhoneForm;
Inputs : array [0..4] of TEdit;
MyThread: DataThread;
bool: boolean;
ColumnIndex: integer;
const
SortName : array[0..2] of string =('по Телефону','по Имени','по Улице');
IndexName : array [0..2] of string =('ByNumTel','ByFamil','ByStreet');
COPY_TO_CLIPBOARD = 'Копировать';
PASTE_FROM_CLIPBOARD = 'Вставить';
function IndexOfItem(Item: string): integer;
implementation
uses IniFiles, DBITypes, DBIProcs, Graphics,ShellApi;
{$R *.dfm}
procedure TPhoneForm.FormCreate(Sender: TObject);
var i, j: integer;
item : tMenuItem;
begin
Table1.TableName := sDataFile;
Table1.Open;
CreatePopupFields;
CalculateEditSize;
UpDateStatusBar;
ReadIni;
Application.onMessage := Aom;
end;
procedure TPhoneForm.MyPopupHandler(Sender: TObject);
begin
if Sender is TMenuItem then with (Sender as TMenuItem) do
begin
case tag of
0..2: begin Table1.IndexName := IndexName[(Sender as TMenuItem).tag ];
SortMode(Sender);
end;
4: Clipboard.AsText := DBGrid1.SelectedField.DisplayText;
end;
UpdateStatusBar;
end;
end;
procedure TPhoneForm.CreatePopupFields;
var
i: integer;
MyPopupMenuItem : array [0..4] of TMenuItem;
MenuItem: TMenuItem;
begin
for i := 0 to 4 do //Создание полей ввода
begin
Inputs[i] := TEdit.Create(self);
Inputs[i].Parent := GroupBox1;
Inputs[i].PopupMenu := PopupMenu2;
Inputs[i].OnContextPopup := MyEditPopup;
Inputs[i].Tag := i;
end;
for i := 0 to 4 do with PopupMenu1 do
begin //Создание меню сортирования
MyPopupMenuItem[i] := TMenuItem.Create(self);
if i<3 then MyPopupMenuItem[i].Caption := SortName[i];
MyPopupMenuItem[i].Tag := i;
MyPopupMenuItem[i].OnClick := MyPopupHandler;
PopupMenu1.Items.add(MyPopupMenuItem[i]);
end;
MyPopupMenuItem[3].Caption := '-';
MyPopupMenuItem[4].Caption := COPY_TO_CLIPBOARD;
MyPopupMenuItem[4].ShortCut := ShortCut(Word('C'), [ssCtrl]);
PopupMenu1.Items[0].Checked := true;
MenuItem := TMenuItem.Create(self);
MenuItem.Caption := PASTE_FROM_CLIPBOARD;
MenuItem.OnClick := MyPopupHandler2;
PopupMenu2.Items.add(MenuItem);
MyEditPopup(nil, Point(0,0), bool);
end;
procedure TPhoneForm.CalculateEditSize;
var
i: integer;
OffSet: integer;
begin
offset :=13; //Размер полей ввода
for i := 0 to 4 do
begin
Inputs[i].Left := Offset;
Offset := Offset + DbGrid1.Columns[i].width + 8;
Inputs[i].Width := DBGrid1.Columns[i].width;
Inputs[i].Top := 24;
Inputs[i].MaxLength :=Table1.Fields[i].Size;
end;
end;
procedure TPhoneForm.UpdateStatusBar;
var SortMode: string;
begin
statusBar1.Panels[0].Text := ' Найдено абонентов: '+ InttoStr(Table1.RecordCount);
Sortmode := SortName[0];
if PopupMenu1.Items[1].Checked then sortMode := SortName[1];
if PopupMenu1.Items[2].Checked then sortMode := SortName[2];
statusbar1.Panels[1].Text := ' Отсортировано: '+SortMode;
end;
procedure tPhoneForm.AOM(var Msg: tagMSG; var Handled: Boolean);
var key : word;
begin
handled := false;
if msg.message = Wm_keydown then
begin // Обробка клавиш
key := msg.wParam;
handled := true;
case key of // Обробка клавиш
vk_up: SendMessage(DBGrid1.Handle,wm_keydown, vk_up, 0);
vk_Down: SendMessage(DBGrid1.Handle,wm_keydown, vk_down, 0);
vk_Prior: SendMessage(DBGrid1.Handle,wm_keydown, vk_Prior, 0);
vk_Next: SendMessage(DBGrid1.Handle,wm_keydown, vk_Next, 0);
vk_return: Search.OnClick(Search);
vk_f1: Application.HelpCommand(HELP_CONTENTS, 0);
else handled := false;
end;
end;
end;
procedure TPhoneForm.SearchClick(Sender: TObject);
var
filters: string;
i: integer;
begin
filters := '';
for i:= 0 to 4 do //with table1 do
begin
if Inputs[i].Text <> ''
then filters := filters + '('+Table1.Fields[i].FieldName + '='+ QuotedStr(Inputs[i].Text + '*')+ ') and';
end;
if filters <> '' then
Filters := copy(Filters, 0, Length(filters)-4);
table1.Filter := filters;
UpdateStatusBar;
end;
procedure TPhoneForm.EraseButtonClick(Sender: TObject);
var
i: integer;
begin
for i := 0 to 4 do Inputs[i].Text := '';
end;
procedure TPhoneForm.SortMode (Sender: tObject);
var
i: integer;
begin
for i := 0 to 2 do
PopupMenu1.Items[i].Checked := false;
(sender as TMenuItem).Checked := true;
end;
procedure TPhoneForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
application.OnMessage := MainForm.progressAom;
WriteIni;
postMessage(MainForm.Handle, WM_CLOSE, 0, 0);
end;
procedure TPhoneForm.ReadIni;
begin
with TIniFile.Create(ExtractFilePath(Application.exename)+sIniFile) do
begin
table1.IndexName := IndexName[ReadInteger('Defaults','SortIndex', 0)];
Left := ReadInteger('Position','left', 100);
top := ReadInteger('Position','top', 100);
Height := ReadInteger('Position','height', 50);
end;
end;
function IndexOfItem(Item: string): integer;
begin
if Item = SortName[1] then result := 1
else if Item = SortName[2] then result := 2
else result := 0;
end;
procedure TPhoneForm.WriteIni;
begin
with TIniFile.Create(ExtractFilePath(Application.exename)+sIniFile) do
begin
WriteInteger('Defaults','SortIndex', IndexOfItem(Table1.indexName));
WriteInteger('Position','left', PhoneForm.left);
WriteInteger('Position','top', PhoneForm.top);
WriteInteger('Position','height', PhoneForm.height);
end;
end;
procedure TPhoneForm.MInMaxSize(var Message: TMessage);
begin
with TwmGetMinMaxInfo(Message) do
begin
MinMaxInfo.ptMaxTrackSize.X := PhoneForm.Width;
MinMaxInfo.ptMaxTrackSize.y := Screen.Height- 100;
MinMaxInfo.ptMinTrackSize.X := PhoneForm.Width;
MinMaxInfo.ptMinTrackSize.y := 200;
end;
end;
procedure TPhoneForm.MyPopupHandler2(Sender: TObject);
begin
if Sender is TMenuItem then
if Clipboard.HasFormat(CF_TEXT) then // number of edit send by popupmenu2.tag
Inputs[PopupMenu2.Tag].Text := Clipboard.AsText;
end;
procedure TPhoneForm.MyEditPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean);
begin
PopupMenu2.Items[0].Enabled := Clipboard.HasFormat(CF_TEXT);
if Sender is TEdit then PopupMenu2.Tag := (Sender as TEdit).Tag
end;
procedure TPhoneForm.N20Click(Sender: TObject);
begin
Application.HelpCommand(HELP_WM_HELP ,0);
end;
procedure TPhoneForm.N13Click(Sender: TObject);
begin
Table1.First;
end;
procedure TPhoneForm.N14Click(Sender: TObject);
begin
Table1.Prior;
end;
procedure TPhoneForm.N15Click(Sender: TObject);
begin
Table1.Next;
end;
procedure TPhoneForm.N16Click(Sender: TObject);
begin
Table1.Last;
end;
procedure TPhoneForm.ExitButtonClick(Sender: TObject);
begin
Table1.Close;
PhoneForm.Close;
end;
procedure TPhoneForm.SearchButtonClick(Sender: TObject);
begin
Search.OnClick(Sender);
end;
procedure TPhoneForm.FormDestroy(Sender: TObject);
begin
Application.HelpCommand(HELP_QUIT,0);
end;
end.
Заключение
В результате выполнения курсовой работы мною было создано приложение для работы с базой данных (dBase) создание алиасов к базе данных.
Список использованной литературы
1. А. Я. Архангельский Программирование в Delphi 7.2003г.
2. Никита Культин. Основы программирования в Delphi 7. Самоучитель.2002г.
3. Delphi 7. Учебный курс. Бобровский С.
Размещено на Allbest.ru
Подобные документы
Создание приложения, использующего возможности встроенной в ОС Android базу данных SQLite. Проектирование приложения для преподавателей "DataBase". Классы для работы с SQLite. Вставка новой записи в базу данных. Методы update и delete. Листинг программы.
курсовая работа [744,9 K], добавлен 07.07.2014Создание базы данных при помощи СУБД, разработка собственного приложения. Информационно-логическая модель рекламного агентства. Структура реляционной базы данных в Access. Заполнение таблиц информацией. Структура приложения и взаимодействия форм.
курсовая работа [12,6 M], добавлен 17.06.2014Назначение базы данных для обеспечения работы автобусного парка. Основные возможности админпанели. Выполняемые базой данных и приложением функции. Инфологическое моделирование данных. Описание разработанного web-приложения. Проектирование базы данных.
курсовая работа [2,2 M], добавлен 01.02.2013Методика и основные этапы проектирования логической и физической модели базы данных. Реализация спроектированной модели в системе управления базами данных, принципы создания и апробация специального клиентского приложения для работы данной программы.
курсовая работа [1,3 M], добавлен 27.06.2013Логическая и физическая модели базы данных. Запрет на содержание неопределенных значений. Размещение базы данных на сервере. Реализация клиентского приложения управления базой данных. Модульная структура приложения. Основные экранные формы приложения.
курсовая работа [1,4 M], добавлен 13.06.2012Разработка прикладной программы, организующей работу с базой данных флагов мира, осуществляющей просмотр и редактирование базы данных, поиск по категориям, сортировку данных с использованием базы данных Paradox 7. Системные требования к программе.
курсовая работа [200,4 K], добавлен 02.03.2009Разработка базы данных "Студенты", которая позволяет производить операции с данными: регистрацию студентов в базе данных, а также удаление, изменение, резервное копирование информации о студентах. Алгоритм работы программы и вспомогательных процедур.
курсовая работа [27,5 K], добавлен 06.02.2013Программа для работы с однотабличной ненормализованной базой данных. Цель программы: обеспечение инструментарием для работы с базой данных различных школьных соревнований. Работа с базой данных на физическом и логическом уровнях. Элементы языка.
курсовая работа [114,3 K], добавлен 02.03.2009Создание структуры базы данных на примере "Школьного журнала" с использованием метода и принципа нормализации. Понятия базы данных, архитектуры БД и проектирования. Описание предметной области; приложения для работы с базой данных TTable и TQuery.
дипломная работа [996,4 K], добавлен 01.04.2012Реляционная модель базы данных в текстовом виде. Код, с помощью которого были созданы и заполнены таблицы. Разработка схемы базы данных справочника селекционера. Создание запросов, их основные виды. Процедуры на выбор данных, добавление и удаление.
методичка [1,1 M], добавлен 20.05.2014