Модель базы данных ГТС на языке мифологического проектирования., страница 2

Анализ описанной предметной области и решаемых задач позволили выделить следующие сущности:

1   АТС;

2   номера телефонов, подключенных к абонентам;

3   абоненты;

4  должники;

5   свободные телефонные номера;

6   междугородные разговоры;

7   городские разговоры;

8   очередь на телефон;

9   общественные телефоны.

Классификация сущностей

Сущности (1), (8), (3) имеет смысл классифицировать как стержневые сущности;

Сущности (6), (2), (4), (5) - как характеристики, так как их существование ((6), (2), (4)) невозможно без сущности (3) и существование сущности (5) невозможно без сущности (1);

Обозначающая сущность - это сущность (9), а (7) - это ассоциация между экземплярами сущности (3).

Описание инфологической модели базы данных ГТС на языке мифологического проектирования:

1  АТС (код АТС, тип АТС)

2  номера (код_АТС, номер, вид, тип)

3  абоненты     (код абонента,      номер,      ФИО,      улица,      номер_дома,        номер_квартиры, возраст, район, есть_льгота, есть_межгород);

4  должники (код абонента, долг_межгород, долг_абонент, сумма, дата);

5  свободные номера (номер, район, код_АТС);

6  междугородние разговоры (код разговора, код_абонента, город, сумма, время, дата);

7  городские разговоры (код разговора, код абонента, код собеседника,       время, дата);

8  очередь   на   телефон   (код очередности,   адрес,   район,   есть_льгота,тип_АТС, тип_телефона);

9  общественные телефоны (такс код, код_АТС, адрес, район);








тип         char(6)      NOT NULL check (тип in ('оси', 'парал1, 'спар'))); Первичный ключ:          номер Внешний ключ:              код_АТС из (R5)           \ NULL- значения не допустимы; Удаления и обновления изАТС.код_АТС каскадируются.

•ч

Ограничения:

^"^™"^^™"^™'^™^^                                                                                          ,                                                .                                                        ^

1)      Значение поля номер должны быть уникальными:

2)      Значение поля вид должны принадлежать набору значений «внутренний», «внешний»;

3)      Зачение поля тип должны принадлежать набору значений «парал», «оси», «спар»;

4)      Значение   поля   код_АТС   должны    принадлежать   набору значений из соответствующего поля таблицы АТС.

Create table абоненты

(код_абонентаchar(6)      NOT NULL primary key,

номерchar(6)      NOT NULL references номера(номер)   on delete

cascade,

ФИОchar(20)    NOT NULL, улица      -            char(20)    NOT NULL,

помер_домаsmallint     NOT NULL check (номер_дома>0\ номер_квартирыsmallint     NOT NULL check (номер_квартиръ£>0\ возрастsmallint                     check (возряст> 18 and возраст<100\ сущ_лъготаchar(4)      NOT NULL check (сущ_лъготаin ('да','нет')), сущ_межгородchar(4)      NOT NULL check (сущ_межгородin (да1,'нет'));

Первичный ключ:             код_абонента

Внешний ключ:            номер из таблицы номера (R6) NULL - значения не допустимы; Удаления и обновления из номера.номер каскадируются.

Ограничения:

1)      Зачение полей номер_дома, номер_квартиры должны быть больше 0.

2)      Значение поля возраст должны быть больше 18, и меньше 100.

т

3)      сущ_лъгота, сущ_межгород - значения этих полей   должны принадлежать набору значений «да», «нет»


-ю-

4)      Значение поля номер должно принадлежать набору значений из соответствующего поля таблицы номера

5)      Значения поля код_абонента должны быть уникальными.

Create table должники

(код_абонёнтаchar(6)      NOT NULL primary key,

долг_межгородchar(6)      NOT NULL      check      (долг_межгородin

Сда','нет')),

долг_абонентchar(20)    NOT NULL check (долг_абонентin ('да','нет')), суммаsmallint     NOT NULL check (сумма>0\ датаdate          NOT NULL);

Первичный ключ:               код_абонента

Внешний ключ:             код_абонента из таблицы абоненты (R2) NULL - значения не допустимы;

Удаления     и     обновления     из     абоненты. код_абонента каскадируются. Ограничения:

1) Значения поля код_абонента должны быть уникальными.

2) Значение поля код_абонента должен соответствовать значениям поля код_абонента из таблицы абоненты.

3) долг_межгород, долг_абонент - значения этих полей должны принадлежать набору значений «да», «нет»

4) Значение поля сумма больше нуля.

5) Значение поля долг_за _межгород не может быть равно 'да' для абонентов, у которых нет выхода на межгород (отключен за неуплату или по собственному желанию).

Create table свободныеномера(номерchar(6)      NOT NULL primary key, районchar(20)    NOT NULL,

код_АТСchar(6)      NOT NULL references АТС(код_АТС) on delete cascade); Первичныйключ:               номер Внешнийключ:             код_АТСиз «ЛГС» (R1) NULL - значения не допустимы; Удаления,обновления из АТС.код_АТСкаскадируются. Внешнийключ:   райониз таблицы очередь нателефон(R9)