Разработка базы данных по доставке почты

Автор работы: Пользователь скрыл имя, 20 Декабря 2012 в 13:51, курсовая работа

Краткое описание

Объект исследования и разработки – автоматизированная система по учету доставки почты.
Цель работы – получить навыки разработки информационной и даталогической моделей для конкретной предметной области, освоить основные принципы работы в СУБД Microsoft Visual FoxPro и InterBase.
Разработаны инфологическая и даталогическая модели базы данных. На их основе разработана и реализована база данных для персональной СУБД Visual FoxPro и серверной SQL-ориентированной СУБД InterBase.

Содержимое работы - 1 файл

05 - Основная часть (Толя).doc

— 767.00 Кб (Скачать файл)

 

Для поддержки ссылочной  целостности в Visual FoxPro можно выбрать следующие правила:

а) при изменении в  родительской таблице значения ключа, использующегося для связи (Rules for Updating):

- Cascade. При изменении значений полей ключа в родительской таблице автоматически осуществляется каскадное изменение всех соответствующих значений в дочерней таблице.

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

- Ignore. Разрешается изменять значения полей ключа в родительской таблице, независимо от существования связанных записей в дочерней таблице. Целостность связей в этом случае не поддерживается.

 

б) при удалении записи в родительской таблице (Rules for Deleting):

- Cascade. При удалении записи в родительской таблице автоматически осуществляется каскадное удаление всех записей из дочерней таблицы, связанных с удаляемой записью.

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

- Ignore. Разрешается удалять записи в родительской таблице независимо от существования связанных записей в дочерней таблице. Целостность связей в этом случае не поддерживается.

 

в) при добавлении новой  записи в дочернюю таблицу или  редактировании в дочерней таблице значения индексного выражения, использующегося для связи (Rules for Inserting):

- Restrict. Запрещается принимать запись, если значение индексного выражения связи дочерней таблицы не соответствует одной из записей в родительской таблице.

- Ignore. Разрешаются любые значения индексного выражения связи в дочерней таблице. Целостность связей в этом случае не поддерживается.

 

В таблице 4.4 приведены  данные, задающие правила поддержки  ограничений ссылочной целостности.

 

 

 

Таблица 4.4 – Правила поддержки  ссылочной целостности

Родительская таблица

Дочерняя таблица

Изменение

в родитель-

-ской таблице

Удаление в родитель-

-ской таблице

Добавление и изменение в дочерней таблице

Индекс в родительской таблице

Индекс в дочерней таблице

1

2

3

4

5

6

7

usluga

tarif

Cascade

Restrict

Restrict

kod_usl

kod_usl

tarif

pocht_otpr

Cascade

Restrict

Restrict

kod_tarif

kod_tarif

otpravitel

pocht_otpr

Cascade

Restrict

Restrict

num_otpravitel

num_otpravitel

poluchatel

pocht_otpr

Cascade

Restrict

Restrict

num_poluchatel

num_poluchatel

spr_mest_op

otsl_pocht_otpr

Cascade

Restrict

Restrict

kod_ops

kod_ops

pocht_otpr

otsl_pocht_otpr

Cascade

Restrict

Restrict

pocht_id

pocht_id


 

Для всех таблиц базы данных выбрана одна политика поддержки ссылочной целостности: при модификации записи в родительской сущности происходит каскадное изменение в дочерней. Удаление записи из родительской сущности запрещается, если в дочерней сущности есть ссылки на эту запись. Добавление записи в дочернюю сущность запрещается, если ее идентификатор не соответствует ни одному из  родительской сущности.

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

 

4.2  Физическое проектирование для СУБД InterBase

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

 

CREATE  DATABASE  "d:\KR.gdb"

USER  "SYSDBA"  PASSWORD  "masterkey";

 

/*********************************************************/

/*   Таблица «usluga» предназначается  для хранения общих данных*/

/*   по набору имеющихся  услуг по доставке почты               */

/*********************************************************/

CREATE  TABLE  usluga (

  /*  код услуги  */

  kod_usl  INTEGER NOT NULL  PRIMARY KEY,

  /*  название услуги  */

  nazv_usl CHAR(30)  NOT NULL,

  /*  описание услуги  */

  opisanie_u VARCHAR(5000)  NOT NULL

);

 

/*********************************************************/

/*   Таблица «tarif» предназначается  для хранения общих данных*/

/*   по набору имеющихся  тарифов, входящих в услугу           */

/*********************************************************/

CREATE  TABLE  tarif (

  /*  код тарифа  */

  kod_tarif  INTEGER NOT NULL  PRIMARY KEY,

  /*  название тарифа  */

  nazv_t CHAR(30)  NOT NULL,

  /*  название гороlа  */

  gorod CHAR(20)  NOT NULL,

  /*  срок доставки  */

  srok_dost CHAR(10)  NOT NULL,

  /*  тип отправления  */

  tip_otpravl CHAR(20)  NOT NULL,

  /*  стоимость  */

  stoimost  NUMERIC(10,2) NOT NULL,

  /*  код услуги  */

  kod_usl INTEGER NOT NULL REFERENCES usluga

                ON DELETE NO ACTION ON UPDATE CASCADE 

);

 

/*********************************************************/

/*   Таблица «otpravitel » предназначается  для хранения общих данных*/

/*   по набору имеющихся  отправителей почты               */

/*********************************************************/

CREATE  TABLE  otpravitel  (

  /*  номер отправителя  */

  num_otpravitel  NUMERIC(10,0) NOT NULL  PRIMARY KEY,

  /*  Ф.И.О. отправителя  */

  fio_otpr CHAR(30)  NOT NULL,

  /*  адрес отправителя  */

  adres_otpr VARCHAR(5000)  NOT NULL,

  /*  индекс отправителя  */

  idx_otpr  NUMERIC(6,0) NOT NULL 

);

 

/*********************************************************/

/*   Таблица «poluchatel» предназначается  для хранения общих данных*/

/*   по набору имеющихся  получателей почты               */

/*********************************************************/

CREATE  TABLE  poluchatel   (

  /*  номер получателя  */

  num_poluch  NUMERIC(10,0) NOT NULL  PRIMARY KEY,

  /*  Ф.И.О. получателя  */

  fio_poluch CHAR(30)  NOT NULL,

  /*  адрес получателя  */

  adres_poluch VARCHAR(5000)  NOT NULL,

  /*  индекс получателя  */

  idx_poluch  NUMERIC(6,0) NOT NULL 

);

 

/*********************************************************/

/*   Таблица «pocht_otpr» предназначается  для хранения общих данных*/

/*   по набору имеющихся  поточвых отправлений                      */

/*********************************************************/

CREATE  TABLE  pocht_otpr   (

  /*  почтовый идентификатор  */

  pocht_id  NUMERIC(14,0) NOT NULL  PRIMARY KEY,

  /*  вес  */

  ves  NUMERIC(10,0) NOT NULL,

  /*  дата отправки  */

  date_otpr DATE  NOT NULL,

  /*  объявленная ценность  */

  cennost  NUMERIC(10,0) NOT NULL,

  /*  номер отправителя  */

  num_otpravitel  NUMERIC(10,0) NOT NULL  REFERENCES otpravitel

                ON DELETE NO ACTION ON UPDATE CASCADE,

  /*  номер получателя  */

  num_poluch  NUMERIC(10,0) NOT NULL  REFERENCES poluchatel

                ON DELETE NO ACTION ON UPDATE CASCADE,

  /*  код тарифа  */

  kod_tarif  INTEGER NOT NULL  REFERENCES tarif

                ON DELETE NO ACTION ON UPDATE CASCADE  

);

 

/*********************************************************/

/*   Таблица «spr_mest_op» предназначается  для хранения общих данных*/

/*   по набору имеющихся  ОПС               */

/*********************************************************/

CREATE  TABLE  spr_mest_op   (

  /*  код ОПС  */

  kod_ops  NUMERIC(10,0) NOT NULL  PRIMARY KEY,

  /*  название ОПС */

  nazv_ops CHAR(30)  NOT NULL,

  /*  тип ОПС */

  tip_ops CHAR(30)  NOT NULL,

  /*  телефон ОПС  */

  telephon  NUMERIC(10,0),

  /*  режим работы ОПС */

  rejim_rab CHAR(50),

  /*  индекс ОПС  */

  idx_ops  NUMERIC(6,0) NOT NULL,

  /*  адрес ОПС */

  adres_ops CHAR(50) NOT NULL

);

 

/*********************************************************/

/*   Таблица «otsl_pocht_otpr» предназначается  для хранения общих данных*/

/*   об отслеживании почтовых  отправлений               */

/*********************************************************/

CREATE  TABLE  otsl_pocht_otpr   ( 

  /*  операция */

  operachiya CHAR(20)  NOT NULL,

  /*  атрибут операции */

  atribut_op CHAR(10)  NOT NULL,

  /*  дата проведения операции  */

  date_op DATE  NOT NULL,

  /*  код ОПС  */

  kod_ops  NUMERIC(10,0) NOT NULL  REFERENCES spr_mest_op

                ON DELETE NO ACTION ON UPDATE CASCADE,

  /*  почтовый идентификатор  */

  pocht_id  NUMERIC(14,0) NOT NULL  REFERENCES pocht_otpr

                ON DELETE NO ACTION ON UPDATE CASCADE,

 

UNIQUE (operachiya, atribut_op, date_op, kod_ops, pocht_id)

 

);

 

COMMIT;


Информация о работе Разработка базы данных по доставке почты