Автор работы: Пользователь скрыл имя, 21 Февраля 2013 в 19:57, курсовая работа
Часто ли пользователю нужен полный доступ к базе? В большинстве случаев запрашивается только та информация, которая напрямую относится к его сфере деятельности. Лучшим решением может являться перенос части базы ближе к пользователям. При решении этой задачи подобным способом получается территориально распределенная (удаленная) база данных.
Организация удаленных баз данных дает ряд преимуществ: снижается время отклика системы, повышается надежность хранения данных, уменьшается стоимость аппаратной части за счет снижения объемов данных, хранящихся на одном сервере.
Введение
Глава1 Основные подходы к проектированию удаленных баз данных
1.1 Основные понятия теории реляционных баз данных
1.2 Сервер базы данных
1.2.1 Технология и модели "клиент-сервер"
Глава 2 Технологии, исползуемые в работе
Глава 3 Реализация модели учета доходов Магазина и продаваемого товара»
3 Постановка задачи
3.1 Общие технические характеристики технологии InterBase
ЗАКЛЮЧЕНИЕ
Список используемой литературы
ПРИЛОЖЕНИЯ
Схема данных
Экранные формы
Листинги программы
Уровни изоляции данных: чтение подтвержденных данных, воспоизводимое чтение и стабильность таблиц..
Разделяемые, защищенные и монопольные блокировки для обеспечения уровн изоляции "стабильность таблиц"
Общие возможности:
Типы данных:
BLOB: неограниченная длина, возможность определения пользовательских подтипов
Импорт и экспорт ASCII данных
Фильтры BLOB для сжатия или преобразования данных BLOB
Ограничения базы данных:
Максимальное количество записей в одной таблице: 2 миллиарда
Максимальный размер таблицы: ограничивается ресурсами системы
Количество баз данных в системе: ограничивается ресурсами системы
Количество активных пользователей: ограничивается ресурсами системы
Количество таблиц в базе данных: 64K
Количество индексов в базе данных: 64K
Максимальный размер записи (не включая BLOB: 64Kb)
Требования к системе:
Минимум оперативной памяти (необходимый минимум для операционной системы) и дискового пространства зависит от операционной системы конкретной платформы
Сетевой протокол: для всех платформ TCP/IP, другие протоколы в зависимости от конкретной платформы.
Разработанная автоматизированная система предназначена для хранения информации о проданных товарах и о расходах клиентов.
Информация из данной базы будет использоваться продавцом, а также его директором.
Наиболее существенные преимущества разработанной АС:
В заключение отметим, что
автоматизация различных
В основу формализации положен событийный подход. Различаются следующие типы существенных событий.
Экранные формы
Рис 1. Форма с параметрами подключения для последующего соединения с базой
Рис 2. Форма для заполнения списка товаров
Рис 3 Форма для заполнения типов товаров, а также их видов и марок
Рис 4. Форма кассового модуля
Рис 5.Форма выбора и продажи товара
Рис 6. Форма проданного товара с учетом его количества, времени его продажи, и кем он был продан
SQL скрипт для создания базы данных на InterBase:
CREATE TABLE "TOVAR" /*создание таблицы товаров */
(
"ID_TOVAR" INTEGER NOT NULL,
"VID" INTEGER NOT NULL,
"TYPE_T" INTEGER,
"MARKA" INTEGER NOT NULL,
"NAIM" VARCHAR(150) NOT NULL,
"MODEL" VARCHAR(20),
"XARAKTER" VARCHAR(50),
"STOIMOST" FLOAT NOT NULL,
CONSTRAINT "PK_TOVAR" PRIMARY KEY ("ID_TOVAR"), /* первичный ключ */
CONSTRAINT "TOVAR_NAIM" UNIQUE ("NAIM") /* уникальное поле */
);
ALTER TABLE "TOVAR" ADD CONSTRAINT "FK_TOVAR_1" FOREIGN KEY ("VID") REFERENCES VID_TOVARA ("ID_VID") ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE "TOVAR" ADD CONSTRAINT "FK_TOVAR_2" FOREIGN KEY ("TYPE_T") REFERENCES TYPES ("ID_TYPE") ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE "TOVAR" ADD CONSTRAINT "FK_TOVAR_3" FOREIGN KEY ("MARKA") REFERENCES MARKS ("ID_MARKA") ON UPDATE CASCADE ON DELETE CASCADE;
CREATE TABLE "KASSA" /*создание таблицы касса */
(
"ID_KASSA" INTEGER NOT NULL,
"DATA" DATE NOT NULL,
"VREMA" TIME NOT NULL,
"PRINATO" FLOAT NOT NULL,
"SDACHA" FLOAT NOT NULL,
"PRIB" FLOAT NOT NULL,
"RABOT" INTEGER NOT NULL,
CONSTRAINT "PK_KASSA" PRIMARY KEY ("ID_KASSA")
);
ALTER TABLE "KASSA" ADD CONSTRAINT "FK_KASSA_1" FOREIGN KEY ("RABOT") REFERENCES RABOTNIKI ("ID_RAB") ON UPDATE CASCADE ON DELETE CASCADE;
CREATE TABLE "PRODAJA" /*создание таблицы продажа*/
(
"ID_PRODAJA" INTEGER NOT NULL,
"DATA" DATE NOT NULL,
"VREMA" TIME NOT NULL,
"TOVAR" INTEGER NOT NULL,
"KOL_VO" FLOAT NOT NULL,
"SUMMA" FLOAT NOT NULL,
CONSTRAINT "PK_PRODAJA" PRIMARY KEY ("ID_PRODAJA")/* первичный ключ */
CREATE TABLE "MARKS" /*создание таблицы марка */
(
"ID_MARKA" INTEGER NOT NULL,
"NAIM" VARCHAR(50) NOT NULL,
"VID" INTEGER NOT NULL,
CONSTRAINT "MARKA_NAIM" UNIQUE ("NAIM"), /* уникальное поле */
CONSTRAINT "PK_MARKS" PRIMARY KEY ("ID_MARKA") /* первичный ключ */
CREATE TABLE "TYPES" /*создание таблицы тип */
(
"ID_TYPE" INTEGER NOT NULL,
"NAIM" VARCHAR(50) NOT NULL,
"VID" INTEGER NOT NULL,
CONSTRAINT "PK_TYPES" PRIMARY KEY ("ID_TYPE"), /* первичный ключ */
CONSTRAINT "TYPE_NAIM" UNIQUE ("NAIM")); /* уникальное поле */
CREATE TABLE "RABOTNIKI" /*создание таблицы работники */
(
"ID_RAB" INTEGER NOT NULL,
"POLZ" VARCHAR(30),
"PASS" VARCHAR(30),
"FIO" VARCHAR(50),
CONSTRAINT "PK_RABOTNIKI" PRIMARY KEY ("ID_RAB")/* первичный ключ */
);
CREATE TABLE "PRODANOE" /*создание таблицы проданое */
(
"ID_PRODAN" INTEGER NOT NULL,
"DATA" DATE NOT NULL,
"NAIM" VARCHAR(150),
"KOL_VO" FLOAT NOT NULL,
"SUMMA" FLOAT NOT NULL,
"VREMA" TIME NOT NULL,
"RABOT" INTEGER NOT NULL,
CONSTRAINT "PK_PRODANOE" PRIMARY KEY ("ID_PRODAN")/* первичный ключ */
);
ALTER TABLE "PRODANOE" ADD CONSTRAINT "FK_PRODANOE_1" FOREIGN KEY ("RABOT") REFERENCES RABOTNIKI ("ID_RAB") ON UPDATE CASCADE ON DELETE CASCADE;
CREATE TABLE "VID_TOVARA" /*создание таблицы вид товара */
(
"ID_VID" INTEGER NOT NULL,
"NAIM" VARCHAR(50) NOT NULL,
CONSTRAINT "PK_VID_TOVARA" PRIMARY KEY ("ID_VID"),
CONSTRAINT "VID_TOVARA_NAIM" UNIQUE ("NAIM") /* уникальное поле */
);
Cоздание внешних ключей и ограничения ссылочной целостности:
ALTER TABLE "KASSA" ADD CONSTRAINT "FK_KASSA_1" FOREIGN KEY ("RABOT") REFERENCES RABOTNIKI ("ID_RAB") ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE "PRODANOE" ADD CONSTRAINT "FK_PRODANOE_1" FOREIGN KEY ("RABOT") REFERENCES RABOTNIKI ("ID_RAB") ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE "TOVAR" ADD CONSTRAINT "FK_TOVAR_1" FOREIGN KEY ("VID") REFERENCES VID_TOVARA ("ID_VID") ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE "TOVAR" ADD CONSTRAINT "FK_TOVAR_2" FOREIGN KEY ("TYPE_T") REFERENCES TYPES ("ID_TYPE") ON UPDATE CASCADE ON DELETE CASCADE;
ALTER TABLE "TOVAR" ADD CONSTRAINT "FK_TOVAR_3" FOREIGN KEY ("MARKA") REFERENCES MARKS ("ID_MARKA") ON UPDATE CASCADE ON DELETE CASCADE;
Создание генераторов для создания автоинкрементных полей в таблицах:
CREATE GENERATOR "GEN_KASSA_ID";
CREATE GENERATOR "GEN_MARKS_ID";
CREATE GENERATOR "GEN_PRODAJA_ID";
CREATE GENERATOR "GEN_PRODANOE_ID";
CREATE GENERATOR "GEN_TOVAR_ID";
CREATE GENERATOR "GEN_TYPES_ID";
CREATE GENERATOR "GEN_VID_TOVARA_ID";
Исходный код обработчика базы данных:
Модуль main:
object frmMain: TfrmMain
Left = 283
Top = 184
BorderIcons = [biSystemMenu]
BorderStyle = bsSingle
ClientHeight = 250
ClientWidth = 453
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
FormStyle = fsStayOnTop
OldCreateOrder = False
OnClose = FormClose
PixelsPerInch = 96
TextHeight = 13
object GroupBox1: TGroupBox
Left = 0
Top = 0
Width = 233
Height = 249
Caption = #1054#1089#1085#1086#1074#
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -19
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
TabOrder = 0
object spT: TSpeedButton
Left = 8
Top = 32
Width = 217
Height = 49
Caption = #1058#1054#1042#1040#1056#1067
Enabled = False
Flat = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -19
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
OnClick = spTClick
end
object spP: TSpeedButton
Left = 8
Top = 81
Width = 217
Height = 49
Caption = #1055#1056#1054#1044#1040#
Enabled = False
Flat = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -19
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
OnClick = spPClick
end
object spK: TSpeedButton
Left = 8
Top = 130
Width = 217
Height = 49
Caption = #1050#1040#1057#1057#1040
Enabled = False
Flat = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -19
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
OnClick = spKClick
end
object SpPr: TSpeedButton
Left = 8
Top = 179
Width = 217
Height = 49
Caption = #1055#1056#1054#1044#1040#
Enabled = False
Flat = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -19
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
OnClick = SpPrClick
end
end
object tuser: TLabeledEdit
Left = 248
Top = 80
Width = 201
Height = 32
CharCase = ecUpperCase
EditLabel.Width = 134
EditLabel.Height = 24
EditLabel.Caption = #1055#1086#1083#1100#1079#