Разработка структуры базы данных для информационной системы "Аэропорт"

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

http: //www. . ru/

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Владимирский государственный университет

имени Александра Григорьевича и Николая Григорьевича Столетовых"

Кафедра информационных систем и программной инженерии

Курсовая работа

Разработка структуры базы данных для информационной системы «Аэропорт»

Выполнил: студент гр. ИСГ-11

Самодуров И. А.

Принял: асс. Проскурина Г. В.

Владимир 2013

1. Введение

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

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

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

2. Постановка задачи

Необходимо разработать прототип программной системы «Аэропорт», содержащий не менее 5 взаимосвязанных таблиц, 5 процедур, 3 функций, 2 триггеров с использованием операторов (функций) ветвления и циклов. Также необходимо обосновать и реализовать как минимум 1 представление и 1 курсор.

Для выполнения работы необходимо использовать

· СУБД MySQL 5. 1

· система создания ER-диаграмм: Open Model Sphere

· язык программирования: SQL

· Среда программирования — клиент командной строки MySQL

3. Проектирование БД

3.1 Описание предметной области

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

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

База данных должна удовлетворять информационные потребности и содержать в себе информацию о полетах, самолетах, аэропортах. Также должна содержаться детальная информация о заказанных билетах на рейсы. Конкретно — Ф.И.О. заказчика, информация о его рейсе и статус оплаты.

3.2 Выделение и нормализация сущностей

Выделим основные сущности базы данных:

· Самолеты

· Полеты

· Клиенты

Опишем каждую из сущностей:

· Самолеты — содержит информацию о самолетах и посадочных местах в самолете

· Полеты — содержит информацию о рейсах, время прибытия и отбытия, аэропорт прибытия и отбытия и т. д.

· Клиенты — содержит информацию о копленных и забронированных билетах. А конкретно кем и на какой рейс куплен или забронирован билет.

Проведём нормализацию сущностей:

1) 1NF — требует атомарности данных в таблицах, т. е. данные в таблицах должны быть представлены в виде минимально возможных и далее неделимых частей информации.

Таблица 1.1 — Ключевая абстракция «Самолеты»

Характеристика

Тип

Название самолета

Строковый

Класс мест

Целочисленный

Количество мест на каждый класс

Целочисленный

Таблица 1.2 — Ключевая абстракция «Полеты»

Характеристика

Тип

Самолет

Строковый

Аэропорт отправления

Строковый

Город аэропорта отправления

Строковый

Страна аэропорта отправления

Строковый

Аэропорт прибытия

Строковый

Город аэропорта прибытия

Строковый

Страна аэропорта прибытия

Строковый

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

Строковый

Время прибытия

Строковый

Таблица 1.3 — Ключевая абстракция «Заказы»

Характеристика

Тип

Самолет

Строковый

Аэропорт отправления

Строковый

Город аэропорта отправления

Строковый

Страна аэропорта отправления

Строковый

Аэропорт прибытия

Строковый

Город аэропорта прибытия

Строковый

Страна аэропорта прибытия

Строковый

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

Время

Время прибытия

Время

Дата отправления

Дата

Класс мест

Числовой целый

Количество билетов (мест)

Числовой целый

Оплата

Булево значение

Ф.И.О.

Строковый

2) 2NF — требует, чтобы структура базы данных удовлетворяла требованиям 1NF и чтобы данные во всех не ключевых столбцах полностью зависели от первичного ключа или каждого поля первичного ключа, если он является составным.

Таблица 2.1 — Реляционная модель БД «Самолёты»

Самолёты

Номер

Модель

Таблица 2.2 — Реляционная модель БД «Места»

Места

Номер

Номер самолёта

Класс места

Количество мест

Таблица 2.3 — Реляционная модель БД «Полёты»

Полёты

Номер

Номер самолёта

Время взлета

Время посадки

Аэропорт отправления

Аэропорт прибытия

Таблица 2.4 — Реляционная модель БД «Аэропорты»

Аэропорты

Номер

Название

Город

Страна

Таблица 2.5 — Реляционная модель БД «Заказы»

Аэропорты

Номер

Номер полёта

Дата полёта

Индиф. номер мест

Количество мест

Оплата (оплачено/нет)

3) 3NF — требует от нас, чтобы структура базы данных удовлетворяла требованиям 1NF и 2NF и чтобы все не ключевые столбцы таблицы зависели от первичного ключа, но были независимы друг от друга.

Таблица 3.1 — Самолёты

Поле

Тип

Назначение

ID

INTEGER

Идентификатор

PlaneName

VARCHAR (255)

Модель самолёта

Таблица 3.2 — Места в самолёте

Поле

Тип

Назначение

ID

INTEGER

Идентификатор

ID_Plane

INTEGER

Номер самолёта

SeatCount

INTEGER

Класс мест

SeatType

INTEGER

Количество мест

Таблица 3.3 — Аэропорты

Поле

Тип

Назначение

ID

INTEGER

Идентификатор

AirPortName

VARCHAR (255)

Название аэропорта

City

VARCHAR (255)

Город

Country

VARCHAR (255)

Страна

Таблица 3.4 — Полёты

Поле

Тип

Назначение

ID

INTEGER

Идентификатор

ID_Plane

INTEGER

Номер самолёта

UpTime

TIME

Время взлета

DownTime

TIME

Время посадки

ID_AP_Up

INTEGER

Аэропорт отправления

ID_AP_Down

INTEGER

Аэропорт прибытия

Таблица 3.5 — Заказы

Поле

Тип

Назначение

ID

INTEGER

Идентификатор

ID_Flight

INTEGER

Номер полёта

FlightDate

DATE

Дата полёта

ID_Seats

INTEGER

Индиф. номер мест

SeatCount

INTEGER

Количество мест

Payed

Boolean

Оплата (оплачено/нет)

FIO

STRING

3.3 Логическая схема базы данных

ER — модель логического уровня

3.4 Обоснование связей между сущностями

1) Связь «Наездник» — «Таблица забегов»: один ко многим, так как участвует не один наездник.

2) Связь «Лошадь» — «Таблица забегов»: один ко многим, так как участвует не одна лошадь.

3) Связь «Клиенты» — «Ставки»: один ко многим, так как один клиент может сделать несколько ставок

4) Связь «Лошадь» — «Ставки»: один ко многим, так как на одну лошадь может быть несколько ставок.

4. Функциональная декомпозиция системы

Проведём функциональную декомпозицию системы. Для этого перечислим все хранимые процедуры и опишем их работу.

1 Сценарий взаимодействия пользователя с системой

Пользователь взаимодействует с СУБД через консоль. Он отправляет SELECT запросы на выборку данных из БД, в ответ он получает данные от сервера. Также для создания расширенных запросов пользователь может использовать хранимые процедуры.

2 Процедура count_orders подсчитывающая количество забронированных и оплаченных рейсов

3 Процедура fly_info выводит время вылета всех рейсов.

4 Процедура add_ord добавляет новый заказ на рейс в базу.

5 Процедура del_ord выполняет удаление записи из таблицы заказов.

6 Процедура change_stat меняет статус брони с не оплачено на оплачено

7 Процедура show_airport показывает все аэропорты указанного города

Функции:

8 Функция get_airplane показывает название самолета на котором должен лететь клиент.

9 Функция get_uptime показывает время отлета указанного рейса.

10 Функция order_num возвращает номер рейса по фамилии клиента

11 Завершение работы с системой

Для завершения работы с СУБД пользователь может использовать команду exit.

5. Реализация компонентов системы

5.1 Физическая структура базы данных

ER - модель физического уровня:

1 Таблица Airplanes

SQL — код:

Create table Airplanes (

-> ID INTEGER not null primary key,

-> Plane VARCHAR (255) not null

->);

2 Таблица Airports

SQL — код:

Create table Airports (

-> ID INTEGER not null primary key,

-> AirPortName VARCHAR (255) not nul,

-> City VARCHAR (255) not nul,

-> Country VARCHAR (255) not nul,

->);

3 Таблица Mesta

SQL — код:

Create table Mesta (

-> ID INTEGER not null primary key,

-> SeatCount INTEGER not null,

-> SeatType INTEGER not null

->);

4 Таблица Klients

SQL — код:

Create table Flying (

-> ID INTEGER not null primary key,

-> UpTime TIME not nul,

-> DownTime TIME not nul

->);

5 Таблица Orders

SQL — код:

Create table Orders (

-> ID INTEGER not null primary key,

-> FIO VARCHAR (255) not nul,

-> FlightDate DATE not null,

-> SeatNumber INTEGER not null,

-> Payed BOOLEAN not null,

-> lastname VARCHAR (255) not null,

-> name VARCHAR (255) not null,

-> otchestvo VARCHAR (255) not null,

Связываем таблицы

alter table Flying add FOREIGN KEY (FK_ID_Plane) REFERENCES Airplanes (ID);

alter table Flying add FOREIGN KEY (FK_ID_AP_Up) REFERENCES Airports (ID);

alter table Flying add FOREIGN KEY (FK_ID_AP_Down) REFERENCES Airports (ID);

alter table Mesta add FOREIGN KEY (FK_ID_Plane) REFERENCES Airplanes (ID);

alter table Orders add FOREIGN KEY (FK_ID_Flight) REFERENCES Flying (ID);

alter table Orders add FOREIGN KEY (FK_ID_Seats) REFERENCES Mesta (ID);

5. 2 Спецификация функций

Перечислим функции ИС:

1 Функция get_airplane показывает название самолета на котором должен лететь клиент.

SQL — код:

delimiter |

CREATE FUNCTION get_airplane (lstnm VARCHAR (255), nm VARCHAR (255), otch VARCHAR (255))

RETURNS VARCHAR (255)

BEGIN

RETURN (SELECT Plane FROM Airplanes WHERE ID IN (SELECT FK_ID_Plane FROM Flying WHERE ID IN (SELECT FK_ID_Flight FROM Orders WHERE lastname = lstnm AND name = nm AND otchestvo = otch)));

END|

2 Функция get_uptime показывает время отлета указанного рейса

SQL — код:

CREATE FUNCTION get_uptime (reys_id INTEGER)

RETURNS TIME

BEGIN

RETURN (SELECT UpTime FROM Flying WHERE ID = reys_id);

END|

3 Функция order_num возвращает номер рейса по фамилии клиента.

SQL — код:

CREATE FUNCTION order_num (client_name VARCHAR (255))

RETURNS INTEGER

BEGIN

RETURN (SELECT `ID` FROM Orders WHERE lastname = client_name ORDER BY FlightDate DESC LIMIT 1);

END|

5.3 Спецификация процедур

Перечислим процедуры ИС:

1 Процедура count_orders подсчитывает количество оплаченных или не оплаченных заказов. На вход подается 0 или 1

SQL — код:

CREATE PROCEDURE `count_orders`(IN `str` INT (1))

BEGIN

SELECT COUNT (*) FROM Orders WHERE `Payed` = str;

END //

2 Процедура fly_info выводит время вылета всех рейсов.

SQL — код:

CREATE PROCEDURE fly_info ()

BEGIN

SELECT Airplanes. Plane, Flying. ID, Flying. UpTime FROM Airplanes RIGHT JOIN Flying ON Airplanes. ID=Flying. FK_ID_Plane;

END|

3 Процедура change_price, меняющая ставку клиента по id ставки используя курсор.

SQL — код:

create procedure change_price (in id integer, in m2 integer)

begin

declare done integer default 0;

declare money integer;

declare cur cursor for select ID_price from price where ID_price = id;

declare continue handler for sqlstate '2 000' set done=1;

open cur;

while done=0 do

fetch cur into money;

update price set Price = m2 where ID_price = money;

end while;

close cur;

end|

4 Процедура add_cl добавляющая клиента, а также его ставку.

SQL — код:

reate procedure add_cl (in fam text, in name text, in fat text, in pr integer, in hor integer)

begin

insert into klients (Family_client, Name_client, Father_name_client) values (fam, name, fat);

select max (ID_client) from klients into @kl;

insert into price (Price, ID_horse, ID_client) values (pr, hor,@kl);

end|

5 Процедура del_cl удаляющая клиента из всех таблиц.

Для работы функции в начале работы с ней нужно прописать:

SET AUTOCOMMIT=0;

SET FOREIGN_KEY_CHECKS=0;

SQL — код:

create procedure del_cl (in id integer)

begin

delete from klients where ID_client=id;

delete from price where ID_client=id;

end|

6 Процедура info_ippodrom показывающая основную информацию об ипподроме, подсчитанную с помощью триггеров.

SQL — код:

create procedure info_ippodrom ()

begin

select @summoney as sum_money, @counthorse as count_horse, @countclient as count_client, @countrunner as count_runner;

end

5.4 Спецификация триггеров

1 Триггер sum_money срабатывает после добавления в таблицу ставки, подсчитывает сумму всех ставок.

SQL — код:

create trigger sum_money after insert on price

for each row

begin

select sum (Price) from price into @summoney;

end

2 Триггер count_horse срабатывает после добавления в таблицу лошади, подсчитывает количество лошадей.

SQL — код:

create trigger count_horse after insert on horse

for each row

begin

select count (ID_horse) from horse into @counthorse;

end|

3 Триггер count_klients срабатывает после добавления в таблицу клиенты, подсчитывает количество клиентов.

SQL — код:

create trigger count_klients after insert on klients

for each row

begin

select count (ID_client) from klients into @countclient;

end|

4 Триггер count_runners срабатывает после добавления в таблицу наездника, подсчитывает количество наездников.

SQL — код:

reate trigger count_runners after insert on runner

for each row

begin

select count (ID_runner) from runner into @countrunner;

end|

5.5 Представление

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

SQL — код:

create view info (Family_client, Name_client, Father_name_client, Price, Name_horse) as

select Family_client, Name_client, Father_name_client, Price, Name_horse from

klients join horse join price on (klients. ID_client = price. ID_client) and

(horse. ID_horse =price. ID_horse) group by Price order by Price desc|

6. Тестирование системы

6.1 Заполнение Б Д актуальными данными

Все таблицы БД заполнены актуальными данными. Каждая из таблиц содержит данные, характеризующие соответствующую сущность. Листинг заполнения БД приведён в приложении Б.

6.2 Описание вспомогательных SELECT-запросов

1) SELECT — запрос для проверки работы триггера sum_money, срабатывающего после добавления в таблицу ставки, подсчитывает сумму всех ставок.

Чтобы проверить его работу сделаем выборку данных из объекта

@summoney

SQL — код:

select @summoney count;

Общая сумма ставок.

2) SELECT — запрос для проверки работы триггера count_horse, вычисляющего количество лошадей в БД.

Чтобы проверить его работу сделаем выборку данных из объекта

@counthorse

SQL — код:

select @counthorse count;

Количество лошадей.

3) SELECT — запрос для проверки работы триггера count_klients, вычисляющего количество клиентов.

Чтобы проверить его работу сделаем выборку данных из объекта

@countclient

SQL — код:

select @countclient count;

Количество клиентов.

4) SELECT — запрос для проверки работы триггера count_runners, вычисляющего количество наездников.

Чтобы проверить его работу сделаем выборку данных из объекта

@countrunner

SQL — код:

select @countrunner count;

Количество наездников.

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

Выполним запрос к представлению

SQL — код:

select * from info;

Результат — таблица со сведениями о ставках.

6.3 Тестирование функций

1) Вызовем функцию count_clients, подсчитывающую количество клиентов, т. е. персон сделавших ставки.

Количество клиентов.

2) Вызовем функцию count_price, выдающую количество ставок, сделанных клиентом. Входным параметром является id клиента.

Получаем количество ставок у 5 клиента.

3) Вызовем функцию get_name, показывающую на лошади, с какой кличкой выступает наездник. Результат — имя лошади. Входным параметром является id наездника.

Получаем что наездник с номером 4 управляет лошадью с кличкой Fire.

6.4 Тестирование процедур

база данные аэропорт триггер

1) Тестируем процедуру count_price подсчитывающую сумму всех ставок на определенный забег. Входные параметры — дата и время забега.

Получаем, что на этот забег сделано ставок на 27 000.

2) Тестируем процедуру win, которая выводит номера клиентов, чья ставка оказалась выигрышной. Также выводит тип забега, в котором был выигрыш.

Получаем, что есть два клиента с выигрышными ставками в двух разных забегах.

3) Тестируем процедуру add_cl добавляющую клиента, а также его ставку. Входные параметры: фамилия, имя, отчество, размер ставки, id лошади.

Получаем нового добавленного клиента и ставку.

4) Тестируем процедуру del_cl удаляющую клиента и связанную с ним ставку. Входной параметр — id клиента.

Для работы функции в начале работы с ней нужно прописать:

SET AUTOCOMMIT=0;

SET FOREIGN_KEY_CHECKS=0;

Клиент и связанная с ним ставка удалены из БД.

5) Тестируем процедуру change_price, меняющую ставку клиента по id ставки используя курсор. Входные параметры — id ставки и сумма новой ставки.

Ставка с id 1 поменялась с 3000 на 5000.

6) Тестируем процедуру Процедура info_ippodrom показывающую основную информацию об ипподроме, подсчитанную с помощью триггеров.

Информация которая подсчитывалась триггерами приведена в этой таблице.

6. 5 Тестирование триггеров

1) Протестируем работу триггера sum_money, срабатывающего после добавления в таблицу ставки, подсчитывает сумму всех ставок.

Чтобы проверить его работу сделаем выборку данных из объекта

@summoney

SQL — код:

select @summoney count;

Общая сумма ставок.

2) Протестируем работу триггера count_horse, вычисляющего количество лошадей в БД. Триггер срабатывает после добавления в таблицу Horse.

Чтобы проверить его работу сделаем выборку данных из объекта

@counthorse

SQL — код:

select @counthorse count;

Количество лошадей.

3) Протестируем работу триггера count_klients, вычисляющего количество клиентов.

Триггер срабатывает после добавления в таблицу Klients.

Чтобы проверить его работу сделаем выборку данных из объекта

@countclient

SQL — код:

select @countclient count;

Количество клиентов.

4) Протестируем работу триггера count_runners, вычисляющего количество наездников. Триггер срабатывает после добавления в таблицу Runner. Чтобы проверить его работу сделаем выборку данных из объекта

@countrunner

SQL — код:

select @countrunner count;

Количество наездников.

6. 6 Тестирование представлений

Представление хранит виртуальную таблицу info в которой содержатся данные о ставках на ипподроме.

Выполним запрос к представлению

В результате получим подробный список ставок.

7. Заключение

В ходе работы была разработана структурная база данных, содержащая 5 взаимосвязанных таблиц по информационной области «Ипподром». Так же был реализован функционал, для удобства работы с данными. Функционал включил в себя 6 процедур, 4 триггера, 3 функции, 1 представление и 1 курсор. Была выполнена работа по выделению сущностей, нормализации таблиц. Затем была создана база данных, которая была заполнена данными. Затем был реализован функционал, впоследствии удачно прошедший тестирования. Также были составлены иллюстрации логической и физической моделей предметной области с помощью средств Open Model Sphere.

8. Список использованных источников

1. MySQL 5.1 Reference Manual Copyright.

2. Максим Кузнецов, Игорь Симдянов. Самоучитель MySQL 5.

3. Кузнецов С. Д. «Основы баз данных», 2-е издание.

Приложение А

Скрипт создания базы данных

SQL — код:

create database ippodrom;

use ippodrom

create table Runner (

ID_runner integer not null primary key unique auto_increment,

Family text not null,

Name text not null,

Father_name text null,

Age_runner integer not null,

Weight integer not null);

create table Horse (

ID_horse integer not null primary key unique auto_increment,

Name_horse text not null,

Type_horse text not null,

Age_horse integer not null);

create table Klients (

ID_client integer not null primary key unique auto_increment,

Family_client text not null,

Name_client text not null,

Father_name_client text null);

create table Table_runs (

ID_run integer not null primary key unique auto_increment,

Type_run text not null,

Place integer not null,

ID_runner integer not null,

Date_run date not null,

ID_horse integer not null,

foreign key (ID_runner) references Runner (ID_runner),

foreign key (ID_horse) references Horse (ID_horse));

create table Price (

ID_price integer not null primary key unique auto_increment,

Price integer not null,

ID_horse integer not null,

ID_client integer not null,

foreign key (ID_horse) references Horse (ID_horse),

-> foreign key (ID_client) references Klients (ID_client));

Query OK, 0 rows affected (0. 23 sec)

Приложение Б

ЗАПОЛНЕНИЕ БАЗЫ ДАННЫХ

Заполнение таблицы Runner

insert into Runner values

(1,'Ivanov','Ivan','Ivanovich','30','75'),

(2,'Petrov','Petr','Petrovic','25','65'),

(3,'Semenov','Semen','Semenovic','32','80'),

(4,'Peter','Vagner','','40','78'),

(5,'Ioghann','Shpitz','','22','72'),

(6,'Ditrich','Valtz','','27','74'),

(7,'Michael','Paterson','','33','68'),

(8,'Donatan','McCinley','','36','82'),

(9,'George','Jourley','','41','73'),

(10,'Kornelio','Spiterri','','31','77');

Заполнение таблицы Horse

insert into Horse values

(1,'Belka','White', 7),

(2,'Daemon','Black', 8),

(3,'Kelly','Brown','9'),

(4,'Strelka','White', 7),

(5,'Fire','Brown', 7),

(6,'Carol','Black', 9),

(7,'Snezhok','White', 8),

(8,'Ghost','Brown', 6),

(9,'Nostra','Black', 7),

(10,'Gary','Yellow', 8);

Заполнение таблицы Klients

insert into Klients values

(1,'Figner','Nick',''),

(2,'Polskich','Garry',''),

(3,'Sydorov','Andrey','Alexeevich'),

(4,'Volkov','Vladimir','Alexandrovich'),

(5,'Smertyn','Venyamin','Ivanovich'),

(6,'Zendler','Ghans',''),

(7,'Fatler','Gerard',''),

(8,'Delly','Carl',''),

(9,'Tyler','James',''),

(10,'Adams','Willham','');

Заполнение таблицы Table_runs

insert into Table_runs values

(1,'Sprint', 5,3,'12. 02. 13', 3,'11:00:00'),

(2,'Sprint', 4,2,'12. 02. 13', 2,'11:00:00'),

(3,'Sprint', 3,5,'12. 02. 13', 4,'11:00:00'),

(4,'Sprint', 2,4,'12. 02. 13', 5,'11:00:00'),

(5,'Sprint', 1,1,'12. 02. 13', 1,'11:00:00'),

(6,'Open Stakes', 5,9,'12. 02. 15', 7,'13:00:00'),

(7,'Open Stakes', 4,7,'12. 02. 15', 9,'13:00:00'),

(8,'Open Stakes', 3,8,'12. 02. 15', 8,'13:00:00'),

(9,'Open Stakes', 2,10,'12. 02. 15', 10,'13:00:00'),

(10,'Open Stakes', 1,6,'12. 02. 15', 6,'13:00:00');

Query OK, 10 rows affected (0. 17 sec)

Records: 10 Duplicates: 0 Warnings: 0

Заполнение таблицы Price

insert into price (Price, ID_horse, ID_client) values

(3000,1,1),

(5000,2,2),

(4000,3,4),

(7000,4,3),

(6000,5,5),

(4000,6,6),

(3500,7,8),

(3500,8,7),

(6500,9,9),

(9500,10,10);

ПоказатьСвернуть
Заполнить форму текущей работой