Создание автоматизированной информационной системы
Министерство образования и науки Украины
Национальный горный университет
Институт электроэнергетики
Факультет информационных технологий Кафедра
Кафедра ПЗКС
КУРСОВОЙ ПРОЕКТ
по дисциплине «Организация баз
данных и знаний»
Работу выполнил:
студент группы ПЗск-09
Ткаченко А.А.
Работу проверили
Преподаватели:
Мацюк И.М.
Васильев С.В.
Днепропетровск 2010
Министерство образования Украины Национальная горная академия Украины
Факультет Электротехнический Кафедра Электроники и вычислительной техники
ЗАДАНИЕ НА КУРСОВОЙ ПРОЕКТ (РАБОТУ)
по дисциплине «Организация баз данных и знаний»
Специальность
Группа Студент
Дата выдачи Срок выполнения
Название задания "Создание автоматизированной информационной системы
Входные данные
Разработать базу данных для автоматизации работы автосалона. Функцией базы данных является сбор сведений по принятым машинам, купленным машинам, оформление покупки машины, возможность печати чека на машину, так же очистку базы данных.
Ежедневная порция вводимых данных не ограниченна в которых обновляется информация.
Хранимая в базе данных информация об машинах должна включать следующие сведения:
- название марки машины;
- Название машины, объём, год выпуска, цену, количество в наличие, состояние;
- Покупателя машины, дату покупки, и цену заказа
- оперативная информация: что приобретается, продается, кем приобретается и пр. Данные в базе данных не должны дублироваться.
База данных должна обеспечивать выборку информации по различным машинам, например: "выдать список машин, указанной марки" и т.д.
Подпись руководителя проекта
СОДЕРЖАНИЕ
ВВЕДЕНИЕ |
стр. |
РАЗДЕЛ 1.ОБЩАЯ ЧАСТЬ |
стр. |
1.1 Спецификация требований |
стр. |
РАЗДЕЛ 2. СПЕЦИАЛЬНАЯ ЧАСТЬ |
стр. |
2.1 Моделирование ИС |
стр. |
2.1.1 Концептуальная модель базы данных |
стр. |
2.1.2 Логическая модель базы данных |
стр. |
2.1.3 Физическая модель базы данных |
стр. |
2.2 Программа базы данных |
стр. |
2.3 Реализация транзакций |
стр. |
ЗАКЛЮЧЕНИЕ |
стр. |
СПИСОК ЛИТЕРАТУРЫ |
стр. |
ВВЕДЕНИЕ
Научно-технический прогресс закономерно привел к передаче ряда человеческих действий машинам и другим средствам автоматизации. Этот процесс наблюдается во всех областях общественной практики людей.
Что относительно автоматизации учетных функций на предприятии, то ее неверно было бы связывать только с машинами, тем более - только с техническими возможностями, которые открываются на современном этапе развития общества. Фактически этот процесс начался с появлением вычислительной техники, когда у работников учетных подразделений предприятия (отдел кадров, бухгалтерия и т.д.) появились возможность выполнять все действия при помощи вычислительной техники, что существенно помогает работнику, принимая на себя ряд его функций.
Однако в полный рост проблема автоматизации возникла лишь во второй половине ХХ века в связи с бурным развитием техники. Вот почему в развитии предпринимательской деятельности можно выделить три этапа. На первом работника должен был обеспечивать учетный процесс сам, не вдаваясь к помощи ни печатных материалах и технических средств. На втором этапе на помощь ему пришли разнообразные печатные материалы, а на третьем к этим материалам добавились машины, которые серьезно изменили привычный вид учетного процесса.
Внедрение технических средств в учетный процесс, конечно, не самоцель. Их применение оправдано только в том случае, когда оно приводит к повышению эффективности учетного процесса хотя бы по одному из таких критериев, как качество ведения учета, затраты времени и сил работника и рабочих, финансовые затраты.
Использование баз данных и информационных систем на сегодняшний день является неотъемлемой частью при налаживании работы современного успешного предприятия или организации. В связи с этим стало необходимым освоение принципов построения и эффективного применения соответствующих информационных технологий и программных продуктов: систем управления базами данных, Case-средств автоматизации проектирования и других. Наиболее известными Case-средствами являются такие как ERWin и BPWin.. Главное преимущество этих программ -достаточно гибкий инструмент моделирования в условиях изменения требований к информационной системы, который уменьшает время ее разработки, увеличивает уровень автоматизации, а также имеет хорошее соотношение стоимость / эффективность.
Borland InterBase является высокопроизводительной кросс-платформенной, встраиваемой реляционной базой данных, сочетающей простую инсталляцию, автоматическое восстановление после сбоев, чрезвычайно низке системные требования и минимальную потребность в сопровождении, что очень важно для надежного функционирования распределенных высокопроизводительных критически важных бизнес-приложений. Среди возможностей базы данных InterBase - запатентованные обработчики оповещений о событиях, хранимые процедуры, триггеры, определяемые пользователем функции (UDF) и фильтры для работы с объектами BLOB.
Одной из основных особенностей InterBase (в отличие от MSSQL), пожалуй, можно считать версионную архитектуру (Multi-Generational), которая обеспечивает уникальные возможности при многопользовательской работе - пишущие пользователи никогда не блокируют читающих! Помимо этого, версионная архитектура, позволяет отказаться (в отличие от ORACLE) от использования протокола транзакций для восстановления базы данных после сбоев, поэтому InterBase обладает очень высокой надежностью и устойчивостью. Также в InterBase реализован механизм оптимистической блокировки на уровне записи, т.е. сервер блокирует только те записи, которые реально были изменены пользователем, а не блокирует всю страницу данных целиком (в отличие от MSSQL). Эта особенность еще больше снижает вероятность конфликтов при многопользовательской работе.
В InterBase удалось добиться таких показателей высокой доступности данных, которые превосходят характеристики других баз данных при выполнении параллельных длительных транзакций в информационных и финансовых системах.
Мощность, простота использования, поддержка платформ Windows, Linux и Solaris - наряду с поддержкой сред разработки Borland Delphi, Kylix и других - выводят InterBase в фавориты среди разработчиков и делают ее наиболее приемлемым ценовым решением среди корпораций.
РАЗДЕЛ 1.ОБЩАЯ ЧАСТЬ
1.1 Спецификация требований пользователей для проекта "Автосалон"
Представление Автосалон в проекте "Автосалон "
- Требования к данным
Машины
Все машины делятся на марки, которые не должны повторятся в базе данных. К каждой марке машины относятся много моделей, которые в свою очередь имеют свои атрибуты.
Тип машины
Каждая марка машины имеет множество моделей с различными параметрами название, объем двигателя, цену машины, год выпуска, количество машин в наличии и состояние каждой. У каждой марки имеется уникальный порядковый номер, таким образом возможно оформление купли/продажи машины на какого либо покупателя.
Заказ
Каждая машина может быть продана кому либо. При оформлении покупки в таблицу оформляется заказ с атрибутами: имя, фамилия, дата оформления, количество покупаемых машин и печатается чек, в свою очередь при печати чека из таблицы типов машин с гаража списывается количество купленных машин.
1.1.2 Требования к транзакциям
Ввод данных
Ввести сведенья о новой марке машин.
Ввести сведенья о новой моделе машин.
Ввести сведенья о покупатели машины.
Обновление/Удаление данных
Обновить/удалить сведенья о марке машины.
Обновить/удалить сведенья о моделях машины.
Очистить все таблицы .
Запросы к данным
Транзакция А. Просмотр списка данных по общему наличию машин в гараже.
Транзакция B. Просмотр списка данных по общему наличию моделей машин в гараже.
Транзакция C. Просмотр и вывод на печать чека на покупку машины.
Транзакция D. Просмотр информации о покупателях автосалона.
РАЗДЕЛ 2. СПЕЦИАЛЬНАЯ ЧАСТЬ
2.1 Моделирование ИС
2.1.1 Концептуальная модель базы данных
- таблица
- связь
(1:n) – один ко многим
(n:1) –многие к одному
2.1.2 Логическая модель базы данных
2.1.3 Физическая модель базы данных
Таблица МАШИНЫ, поля (КОД МАШИНЫ, МАРКА).
Таблица ТИП МАШИНЫ, поля (НОМЕР ПО ПОРЯДКУ, КОД МАШИНЫ, НАЗВАНИЕ, ОБЪЁМ, ЦЕНА, ГОД ИЗГОТОВЛЕНИЯ, КОЛИЧЕСТВО НА СКЛАДЕ, СОСТОЯНИЕ).
Таблица ЗАКАЗ, поля (КОД ЗАКАЗА, КОД НАЗВАНИЯ, ИМЯ, ФАМИЛИЯ, ДАТА, КОЛИЧЕСТВО, ЦЕНА ЗАКАЗА).
2.2 Текст программы
unit glavnaya;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button6: TButton;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses vvod, datamodule, oformlenie, prosmotr_dannih;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
parol:String;
begin
parol:='0000';
parol:=inputbox('Введите
if parol=inttostr(1111) then
begin
Form2.Show;
Form1.hide;
end
else
begin
ShowMessage('пароль не верный или ввод отменён');
Form2.hide;
Form1.Show;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Form1.Close;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
form3.Show;
Form1.Hide;
DataModule1.Query1.Close;
DataModule1.Query1.open;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
prosmotr.show;
Form1.Hide;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
if Application.MessageBox('
begin
while not(DataModule1.mashina.Eof) do
begin
DataModule1.mashina.Edit;
DataModule1.mashina.Delete;
DataModule1.mashina.
end;
while not(DataModule1.tip_mashini.
begin
DataModule1.tip_mashini.Edit;
DataModule1.tip_mashini.
DataModule1.tip_mashini.
end;
while not(DataModule1.zakaz.Eof) do
begin
DataModule1.zakaz.Edit;
DataModule1.zakaz.Delete;
DataModule1.zakaz.ApplyRange;
end;
Application.MessageBox('
end;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
Form1.Hide;
DataModule1.Query1.open;
end;
end.
unit datamodule;
interface
uses
SysUtils, Classes, DBTables, DB, RpCon, RpConDS, RpDefine, RpRave;
type
TDataModule1 = class(TDataModule)
Tmashina: TDataSource;
Ttip_mashini: TDataSource;
Tzakaz: TDataSource;
TQuery1: TDataSource;
mashina: TTable;
tip_mashini: TTable;
zakaz: TTable;
Query1: TQuery;
mashinaKod_mashini: TAutoIncField;
mashinaMarka: TStringField;
tip_mashiniN_po_poryadku: TAutoIncField;
tip_mashiniKod_mash: TIntegerField;
tip_mashiniNazv: TStringField;
tip_mashiniObem: TFloatField;
tip_mashiniCena: TCurrencyField;
tip_mashiniGod_izgot: TIntegerField;
tip_mashiniKol_na_skl: TIntegerField;
tip_mashiniSostoyanie: TStringField;
Query1Marka: TStringField;
Query1Kod_mashini: TIntegerField;
Query1Nazv: TStringField;
Query1Obem: TFloatField;
Query1Cena: TCurrencyField;
Query1God_izgot: TIntegerField;
Query1Kol_na_skl: TIntegerField;
Query1Sostoyanie: TStringField;
zakazKod_zakaza: TAutoIncField;
zakazKod_nazv: TIntegerField;
zakazIm9: TStringField;
zakazFamil: TStringField;
zakazDate: TDateField;
zakazKol: TIntegerField;
zakazCena_zakaza: TCurrencyField;
Query1N_po_poryadku: TIntegerField;
private
{ Private declarations }
public
{ Public declarations }
end;
var
DataModule1: TDataModule1;
implementation
{$R *.dfm}
end.
unit vvod;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls, jpeg;
type
TForm2 = class(TForm)
DBGrid1: TDBGrid;
DBNavigator1: TDBNavigator;
DBGrid2: TDBGrid;
DBNavigator2: TDBNavigator;
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
type
fill=file of record
r:string[15];
end;
var
Form2: TForm2;
p:string;
implementation
uses datamodule, glavnaya, oformlenie, Math;
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
Form2.hide;
Form1.Show;
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
DataModule1.Query1.Close;
DataModule1.Query1.Refresh;
DataModule1.tip_mashini.
end;
end.
unit oformlenie;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DBCtrls, Grids, DBGrids, RpCon, RpConDS, RpDefine,
RpRave, ExtCtrls, Mask, jpeg;
type
TForm3 = class(TForm)
DBLookupComboBox1: TDBLookupComboBox;
DBLookupComboBox2: TDBLookupComboBox;
DBLookupComboBox3: TDBLookupComboBox;
Button1: TButton;
Button2: TButton;
report: TRvProject;
query_otch: TRvDataSetConnection;
Label1: TLabel;
Label3: TLabel;
Label2: TLabel;
zakaz: TRvDataSetConnection;
DBRadioGroup1: TDBRadioGroup;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
DBText1: TDBText;
Label9: TLabel;
Image1: TImage;
procedure Button2Click(Sender: TObject);
procedure DBLookupComboBox1Click(Sender: TObject);
procedure DBLookupComboBox2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure DBLookupComboBox3Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure DBRadioGroup1Click(Sender: TObject);
procedure DBEdit1Click(Sender: TObject);
procedure DBEdit3Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form3: TForm3;
cl,found:integer;
implementation
uses datamodule, glavnaya, vvod;
{$R *.dfm}
procedure TForm3.Button2Click(Sender: TObject);
begin
Form3.hide;
Form1.Show;
DBLookupComboBox2.Enabled:=
DBLookupComboBox3.Enabled:=
Button1.Enabled:=false;
DataModule1.Query1.Filtered:=
DataModule1.Query1.Close;
DBRadioGroup1.Enabled:=false;
DataModule1.zakaz.CancelRange;
end;
procedure TForm3.DBLookupComboBox1Click(
begin
if cl>0 then
DataModule1.zakaz.CancelRange;
cl:=0;
DBRadioGroup1.Items.Clear;
DBRadioGroup1.Values.Clear;
DBLookupComboBox2.Enabled:=
DBLookupComboBox3.Enabled:=
Datamodule1.Query1.Filtered:=
DataModule1.Query1.Filter:='
Datamodule1.Query1.Filtered:=
Datamodule1.Query1.Open;
while not(DataModule1.Query1.Eof) do
begin
DBRadioGroup1.items.Add(
DataModule1.Query1.Next;
end;
end;
procedure TForm3.DBLookupComboBox2Click(
begin
DBRadioGroup1.Items.Clear;
DBRadioGroup1.Values.Clear;
DataModule1.Query1.Filtered:=
DataModule1.Query1.Filter:='(
DataModule1.Query1.Refresh;
Datamodule1.Query1.Filtered:=
while not(DataModule1.Query1.Eof) do
begin
DBRadioGroup1.items.Add(
DataModule1.Query1.Next;
end;
DBLookupComboBox3.Enabled:=
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
found:=0;
if not(DBEdit1.Field.Value=Null) and not(DBEdit2.Field.Value=Null) and not(DBEdit3.Field.Value=Null) and not(DBEdit4.Field.Value=Null) then
begin
DataModule1.zakaz.ApplyRange;
while not(DataModule1.tip_mashini.
begin
if (DataModule1.tip_mashiniKol_
begin
found:=1;
{DataModule1.tip_mashini.
DataModule1.tip_mashini.
DataModule1.zakaz.Last;
DataModule1.zakaz.edit;
DataModule1.zakazCena_zakaza.
DataModule1.zakazCena_zakaza.
DataModule1.zakaz.ApplyRange;
DataModule1.zakaz.Last;
Label9.Caption:=IntToStr(
DataModule1.zakaz.Filter:='
DataModule1.zakaz.Filtered:=
DataModule1.tip_mashini.Edit;
DataModule1.tip_mashiniKol_na_
DataModule1.tip_mashini.
report.Execute;
DBLookupComboBox2.Enabled:=
DBLookupComboBox3.Enabled:=
Button1.Enabled:=false;
DBEdit1.Enabled:=false;
DBEdit2.Enabled:=false;
DBEdit3.Enabled:=false;
DBEdit4.Enabled:=false;
Button1.Enabled:=false;
DBRadioGroup1.Enabled:=false;
DataModule1.Query1.Filtered:=
DataModule1.zakaz.Filtered:=
Form3.close;
Form1.Show;
end;
DataModule1.tip_mashini.Next;
DataModule1.zakaz.Next;
end;
if found=0 then
begin
Application.MessageBox('нету в наличии','чек',MB_OK);
DBLookupComboBox2.Enabled:=
DBLookupComboBox3.Enabled:=
Button1.Enabled:=false;
DBEdit1.Enabled:=false;
DBEdit2.Enabled:=false;
DBEdit3.Enabled:=false;
DBEdit4.Enabled:=false;
Button1.Enabled:=false;
DBRadioGroup1.Enabled:=false;
DataModule1.Query1.Filtered:=
DataModule1.zakaz.Filtered:=
Form3.Close;
Form1.Show;
end;
end
else
begin
Application.MessageBox('
end;
end;
procedure TForm3.DBLookupComboBox3Click(
begin
DBRadioGroup1.Items.Clear;
DBRadioGroup1.Values.Clear;
DataModule1.Query1.Filtered:=
DataModule1.Query1.Filter:='(
DataModule1.Query1.Refresh;
Datamodule1.Query1.Filtered:=
DBLookupComboBox3.Enabled:=
while not(DataModule1.Query1.Eof) do
begin
DBRadioGroup1.items.Add(
DataModule1.Query1.Next;
end;
DBRadioGroup1.Enabled:=true;
end;
procedure TForm3.FormShow(Sender: TObject);
begin
DataModule1.Query1.open;
DataModule1.Query1.Refresh;
cl:=0;
end;
procedure TForm3.DBRadioGroup1Click(
begin
DataModule1.mashina.
DBRadioGroup1.Enabled:=false;
DBEdit1.enabled:=true;
DBEdit2.enabled:=true;
DBEdit3.enabled:=true;
DBEdit4.enabled:=true;
Button1.Enabled:=true;
end;
procedure TForm3.DBEdit1Click(Sender: TObject);
begin
if cl<1 then
begin
DataModule1.zakaz.CancelRange;
DataModule1.zakaz.Insert;
DataModule1.zakazKod_nazv.
cl:=1;
end;
end;
procedure TForm3.DBEdit3Click(Sender: TObject);
begin
DBEdit3.Field.Value:=
DataModule1.zakazDate.Value:=
end;
procedure TForm3.Button3Click(Sender: TObject);
begin
DataModule1.zakaz.Last;
Label9.Caption:=IntToStr(
DataModule1.zakaz.Filter:='
DataModule1.zakaz.Filtered:=
end;
procedure TForm3.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if DataModule1.mashinaMarka.
begin
Application.MessageBox('нету
Form3.Hide;
Form1.Show;
end;
end;
end.
unit prosmotr_dannih;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids, DBGrids, jpeg, ExtCtrls;
type
Tprosmotr = class(TForm)
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
DBGrid3: TDBGrid;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
prosmotr: Tprosmotr;
implementation
uses datamodule, glavnaya;
{$R *.dfm}
procedure Tprosmotr.Button1Click(Sender: TObject);
begin
prosmotr.Hide;
Form1.Show;
end;
end.
2.3 Реализация транзакций
Транзакция А. Просмотр и вывод на печать списка данных по общему количеству мужчин на фирме
Транзакция А. Просмотр списка данных по общему наличию машин в гараже.
parol:='0000';
parol:=inputbox('Введите пароль','parol',parol);
if parol=inttostr(1111) then
begin
prosmotr.show;
Form1.Hide;
end;
Транзакция B. Просмотр списка данных по общему наличию моделей машин в гараже.
parol:='0000';
parol:=inputbox('Введите пароль','parol',parol);
if parol=inttostr(1111) then
begin
prosmotr.show;
Form1.Hide;
end;
Транзакция C. Просмотр и вывод на печать чека на покупку машины.
found:=0;
if not(DBEdit1.Field.Value=Null) and not(DBEdit2.Field.Value=Null) and not(DBEdit3.Field.Value=Null) and not(DBEdit4.Field.Value=Null) then
begin
DataModule1.zakaz.ApplyRange;
while not(DataModule1.tip_mashini.
begin
if (DataModule1.tip_mashiniKol_
begin
found:=1;
DataModule1.zakaz.Last;
DataModule1.zakaz.edit;
DataModule1.zakazCena_zakaza.
DataModule1.zakazCena_zakaza.
DataModule1.zakaz.ApplyRange;
DataModule1.zakaz.Last;
Label9.Caption:=IntToStr(
DataModule1.zakaz.Filter:='
DataModule1.zakaz.Filtered:=
DataModule1.tip_mashini.Edit;
DataModule1.tip_mashiniKol_na_
DataModule1.tip_mashini.
report.Execute;
DBLookupComboBox2.Enabled:=
DBLookupComboBox3.Enabled:=
Button1.Enabled:=false;
DBEdit1.Enabled:=false;
DBEdit2.Enabled:=false;
DBEdit3.Enabled:=false;
DBEdit4.Enabled:=false;
Button1.Enabled:=false;
DBRadioGroup1.Enabled:=false;
DataModule1.Query1.Filtered:=
DataModule1.zakaz.Filtered:=
Form3.close;
Form1.Show;
Транзакция D. Просмотр информации о покупателях автосалона.
prosmotr.show;
Form1.Hide;
Главное меню базы данных
Просмотр информации базы данных:
Окно ввода пароля при переходе на редактировании:
Окно ввода информации о машинах:
Оформление покупки.
Печать необходимой информации.
Общий вид чека.
ЗАКЛЮЧЕНИЕ
В ходе курсового проекта была разработана информационная система "Автосалон", обеспечивающая сбор информации о машинах, а также ведение сопутствующей документации. Реляционная база данных обладает высокой степенью отказоустойчивости, гибкости и легкостью в управлении. Информационная система "Автосалон", может быть легко модифицирована, расширена и дополнена, в зависимости от новых потребностей, задач и функций ставящихся перед ней.
Также в этой базе данных возможна распечатка необходимых результатов её работы, что является очень удобной неотъемлемой составляющей.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ
Дейт К. Введение в системы баз данных. - М.: Наука, 1980.
Ханенко В.Н. Информационные системы. - Л.: Машиностроение, 1988.
Кроув Т., Эйвисон Д. Базы данных в административных информационных системах. - М.: Финансы и статистика, 1983.
Шлеер С, Меллор С. Объектно-ориентированный анализ: моделирование мира в состояниях. - К.: Диалектика, 1993.
Боуман Д, Эмерсон С.„ Дарновски М. Практическое руководство по SQL. - Киев: Диалектика, 1997.
Хаббард Д. Автоматизированное проектирование баз данных. - М.: Мир, 1984. - 294 с.
Цикритизис Д., Лоховски Ф. Модели данных. - М.: Финансы и статистика, 1985. - 344 с.
Чен П. Модель "сущность-связь" - шаг к единому представлению о данных //СУБД. - 1995. -№3. -С.137-158.
Коннолли Т., Бегг К. Базы дааных. 2000.
Грабер М. Справочное руководство по SQL. - М.: Лори, S997. - 291 с.
Диго СМ. Проектирование и использование баз данных. - М.: Финансы и статистика, 1995.-208 с.