Файл: Проектирование БД посетителей фитнес клуба.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 03.07.2023

Просмотров: 619

Скачиваний: 22

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

обладает

1

М

Cоциальное положение

посетитель

2.3. Разбиение связей М:М

Таких связей нет.

3. Описание возможных запросов.

Время от времени пользователям нужно запрашивать данные из базы, чтобы отвечать на вопросы, идентифицировать проблемы или обнаруживать определенные ситуации. Создадим запросы для предметной области фитнес клуб.

7.1 Узнать расписание работы тренеров в залах.

7.2 Узнать должников по оплате.

7.3 Узнать классификационные категории тренеров.

7.4 Просмотреть сумму, которую должен оплачивать посетитель и обладает ли он какими-нибудь льготами.

7.5 Просмотреть в каких клубах работают каждый из тренеров.

7.6 Узнать кто из посетителей не обладает льготами.

7.7 Узнать кто из посетителей старше среднего возраста

3.1. Построение модели данных с помощью Erwin (логический уровень)

Erwin имеет два уровня представления модели – логический и физический.

Логический уровень – это абстрактный взгляд на данные, на нем данные представляются так, как выглядят в реальном мире, и могут называться так, как они называются в реальном мире. Логическая модель данных является универсальной и никак не связана с конкретной реализацией СУБД.[1]

Диаграмма Erwin строится из трех основных блоков: сущностей, атрибутов и связей.

Основная информация, описывающая сущность, включает:

  • Атрибуты, составляющие первичный ключ;
  • Неключевые атрибуты;
  • Тип сущности (независимая/зависимая).

Первичный ключ – атрибут, который однозначно характеризует объект.

Рассмотрим сущности

Посетитель(ФИО посетителя*, домашний адрес, год рождения, оплата, телефон)

Социальное положение(наименование социального положения*, льгота)

Тренер (ФИО тренера*, домашний адрес тренера, телефон, № паспорта, разряд)

В качестве альтернативного ключа сущности Посетитель выбрана ФИО посетителя, но так как могут встречаться однофамильцы можно взять в качестве первичного ключа – код посетителя. Аналогичная ситуация и с сущностями Тренер и Социальное положение, в качестве первичного ключа тоже возьмем коды тренера и соц. Положения соответственно.


Типы связи

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

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

- Неидентифицирующая связь;

- Идентифицирующая связь;

Модель данных на логическом уровне представлена на рисунке 2.

Логическая модель с атрибутами и связями

3.2. Описание модели данных с помощью Erwin (физический уровень)

Физическая модель данных зависит от конкретной СУБД (в данном случае InterBase), фактически являясь отображением системного каталога. В физической модели содержится информация о всех объектах БД. Поскольку стандартов на объекты БД не существует, физическая модель зависит от конкретной реализации СУБД. Следовательно, одной и той же модели могут соответствовать несколько разных физических моделей. Если в логической модели не имеет значение, какой конкретно тип данных имеет атрибут, то в физической модели важно описать всю информацию о конкретных физических объектах – таблицах, колонках, индексах, процедурах и т.д. Разделение модели данных на логический и физический уровни позволяет решить множество важных задач.[1]

На рисунке 3 представлена схема физической модели, а в таблице 3 приведено соответствие между объектами и атрибутами логического и физического уровней.

Таблица 3

Название сущности на логическом уровне.

Название таблиц на физическом уровне

Название атрибутов на логич. уровне

Название полей на физическом уровне

Тип данных

Фитнес клуб

Fitnes_club

Название

club_s_number

CHAR(18)

Директор

Director

VARCHAR(20)

Телефон

Telephone

VARCHAR(20)

Адрес

Adress

VARCHAR(20)

Залы

Halls

Название

Hall_s_name

CHAR(18)

Номер

Namber

VARCHAR(20)

Внутренний телефон

Inner_telephone namber

VARCHAR(20)

Группы

Groups

Номер группы

Group_s_namber

INTEGER

Уровень группы

Group_s_level

VARCHAR(20)

Помесячная оплата

Monthly_pay

INTEGER

Посетитель

Visitor

ФИО

sername_and_name

CHAR(18)

Адрес

Adress

VARCHAR(20)

Год рождения

Year_of_berthday

VARCHAR(20)

Оплата

Pay

VARCHAR(20)

Социальное положение

Social_Condition

Наименование

Denomination

VARCHAR(20)

Льгота

Lgotes

INTEGER

Тренер

Trainer

ФИО

sername_and_name

VARCHAR(20)

Адрес

Adress

VARCHAR(20)

Телефон

Telephone

INTEGER

№ паспорта

Npasport

INTEGER

Разряд

Category

VARCHAR(20)

День недели

Day_s_of_week

название

Name

VARCHAR(20)

Начало работы

Beginning_of_work

VARCHAR(20)

Конец работы

End_of_work

VARCHAR(20)


Запросы

1 Узнать расписание работы тренеров в залах.

Запрос MILA2 таблиц trainer (SURNAME_AND_NAME, HALL_S_NAME),

day_of_week( NAME, BEGINNING_OF_WORK, END_OF_WORK)

2 Узнать должников по оплате.

Запрос MILA3 таблицы visitor( SURNAME_AND_NAME, PAY)

3 Узнать классификационные категории тренеров.

Запрос MILA5таблицы trainer(SURNAME_AND_NAME, CATEGORY)

4 Просмотреть сумму, которую должен оплачивать посетитель и обладает ли он какими-нибудь льготами.

Запрос MILA6 таблиц visitor (SURNAME_AND_NAME), groups (HALL_S_NAME, MOHTHLY_PAY ), social_condition (LGOTES)

5 Просмотреть в каких клубах работают каждый из тренеров.

Запрос MILA9 таблиц halls ( CLUB_S_NUMBER), trainer (SURNAME_AND_NAME)

6 Узнать кто из посетителей не обладает льготами.

Запрос MILA7 запроса mila6 ( SURNAME_AND_NAME, MOHTHLY_PAY, LGOTES)

7 Узнать кто из посетителей старше среднего возраста

Запрос MILA8 таблицы visitor(SURNAME_AND_NAME, YEAR_OF_BERTHDAY)

Рисунок 3

Физическая модель.

Возможные триггеры.

1. Триггер на изменение данных о льготах, размер которых не может превышать 100. При этом, введение большей цифры, чем 100, не будет разрешено и появится окно сообщения, с информацией о том, что льготы, большей чем 100 не бывает

2. . Триггер на изменение данных о категории тренеров, которые могут быть только высшей первой либо второй. Тренера с другими категориями не могут работать в клубе. При вводе иной категории выдается окно сообщения о неправильности ввода категории и ввод информации не происходит

Процедуры.

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

2.Процедура, в которой по фамилии посетителя можно узнать сумму, которую он должен заплатить за занятия с учетом льгот.

4.Реализация.

4.1. Примеры таблиц

Фитнес клуб

Залы

Группа

Посетитель

Социальное положение

Тренер

День недели

4.2.Примеры запросов, текст SQL запросов

1 Узнать расписание работы тренеров в залах.


CREATE VIEW MILA2(

SURNAME_AND_NAME,

HALL_S_NAME,

NAME,

BEGINNING_OF_WORK,

END_OF_WORK)

AS

select trainer.sername_and_name,trainer.hall_s_name,

day_of_week.name,day_of_week.beginning_of_work,day_of_week.end_of_work

from trainer,day_of_week

where trainer.code_trainer=day_of_week.code_trainer;

2 Узнать должников по оплате.

CREATE VIEW MILA3(

SURNAME_AND_NAME,

PAY)

AS

select visitor.surname_and_name,visitor.pay from visitor

where pay='нет';

;

3 Узнать классификационные категории тренеров.

CREATE VIEW MILA5(

SURNAME_AND_NAME,

CATEGORY)

AS

select trainer.sername_and_name,trainer.category from trainer

4 Просмотреть сумму, которую должен оплачивать посетитель и обладает ли он какими-нибудь льготами.

CREATE VIEW MILA6(

SURNAME_AND_NAME,

HALLS_NAME,

MOHTHLY_PAY,

LGOTES)

AS

select visitor.surname_and_name, groups.hall_s_name,groups.monthly_pay,social_condition.lgotes

from visitor,groups,social_condition

where visitor.group_s_number=groups.group_s_number and visitor.code_social_condition=social_condition.code_social_condition;

5 Просмотреть в каких клубах работают каждый из тренеров.

CREATE VIEW MILA9(

CLUB_S_NUMBER,

SURNAME_AND_NAME)

AS

select halls.club_s_number,trainer.sername_and_name

from halls, trainer

where halls.hall_s_name=trainer.hall_s_name;

6 Узнать кто из посетителей не обладает льготами.

CREATE VIEW MILA7(

SURNAME_AND_NAME,

MOHTHLY_PAY,

LGOTES)

AS

select mila6.surname_and_name, mila6.mohthly_pay,mila6.lgotes

from mila6

where mila6.lgotes='0' ;

7 Узнать кто из посетителей старше среднего возраста

CREATE VIEW MILA8(

SURNAME_AND_NAME,

YEAR_OF_BERTHDAY)

AS

select visitor.surname_and_name,visitor.year_of_berthday from visitor

where year_of_berthday<1960;

4.3. Триггеры, SQL тексты триггеров

1.Триггер на запрещение изменение данных о льготах.

CREATE TRIGGER SOCIAL_CONDITION_BU0 FOR SOCIAL_CONDITION

ACTIVE AFTER UPDATE POSITION 0

as

begin

if (social_condition.lgotes>100) then

exception new_exception1;

end

2. Тригер на запрещение изменения данных о категории тренеров

CREATE TRIGGER TRAINER_BU0 FOR TRAINER

ACTIVE AFTER UPDATE POSITION 0

as

begin

if ( (trainer.category<>'Высшая')and(trainer.category<>'Первая')and(trainer.category<>'Вторая')) then

/* Trigger Text */ exception new_exception;

end

4.4. Примеры процедур, SQL текст процедур

1. По названию клуба вывести все относящиеся к нему залы.

CREATE PROCEDURE CLUB_NAME (

CLUB_NAME CHAR(18))

RETURNS (

CLUB_S_NUMBER CHAR(18),

HALL_S_NAME CHAR(18))

AS

begin

For select club_s_number,hall_s_name

from halls where (halls.club_s_number=:club_name)

Into :club_s_number, hall_s_name

do

suspend;