Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > Помогите создать БД SQL


Автор: SymplyFying 20.4.2007, 15:27
Здраствуйте, помогите решить задачку:
Цитата

Продажа билетов в кинотеатре:
БД должна содержать информацию о идущих фильмах: "Название", "Жанр", "Продолжительность", "Атёры", "Годы выпуска", "Производитель", "Страна", и др. О сеансах: "Начало", "Окончание", "Продолжительность". О ценах на билеты, о продаже билетов, о свободных местах.

Разработка структуры:
1) Уточнение задания
2) Анализ предметной области, определение сущностей и связей
3) Нормализация
4) Проектирование таблиц

Язык SQL:
1) Создать все таблицы в БД
2) Заполнить таблицы информацией(по 5-10 записей)
3) Выборка данных(примерно 10 запросов по всем изученным возможностям)
4) По каждому запросу подробные комментарии и результат выполнения, если запрос на работу с данными для каждого запроса из п.3 приветсти содержание постановки.

Решение:
Код

/*Создаём базу данных и именем Cinema*/
CREATE DATABASE IF NOT EXISTS `Cinema`;
/*Все последующие действия будем вести с ней*/
USE `Cinema`;

/*Создаём таблицы*/

/*Структура таблицы `films`*/
CREATE TABLE IF NOT EXISTS `films` (
  /*идентификатор*/
  `id`          int(11) NOT NULL AUTO_INCREMENT,       
  /*название*/ 
  `name`          text NOT NULL,                
  /*жанр*/
  `genre`         text NOT NULL,                
  /*продолжительность*/
  `duration`      int(5) NOT NULL,              
  /*актёры*/
  `actors`        text NOT NULL,
  /*дата выпуска*/
  `release_date` date NOT NULL,
  /*производитель*/
  `developer`      varchar(50) NOT NULL,
  /*страна*/
  `country`      varchar(40) NOT NULL,
  /*ключевое поле id*/
  UNIQUE KEY `id` (`id`)
);

/*Дамп данных таблицы `films`, т.е. заполнение таблицы значениями*/
 
/*
Существуют следующие типы запросов:
SELECT – выбрать строки из таблиц; 
INSERT – добавить строки в таблицу; 
UPDATE – изменить строки в таблице; 
DELETE – удалить строки в таблице;
*/

/*В данном запросе мы добавляем данные в таблицу films*/
INSERT INTO 
`films` 
(`id`,`name`, `genre`, `duration`, `actors`, `release_date`, `developer`, `country`) 
VALUES 
/*тут данные вбиваемые в талицу*/;

/*Структура таблицы `seanses`*/
CREATE TABLE IF NOT EXISTS `seanses` (
  /*идентификатор*/
  `id`          int(11) NOT NULL AUTO_INCREMENT, 
  /*идентификатор фильма*/
  `film_id`          int(11) NOT NULL, 
  /*дата сеанса*/
  `seanse_date` date NOT NULL default,        
  /*начало*/ 
  `start`          datetime NOT NULL,                
  /*конец*/
  `stop`         datetime NOT NULL,                
  /*В результате нормализации таблиц поле "продолжительность" - было решено убрать из данной таблицы*/
  UNIQUE KEY `id` (`id`)
);

И в этом месте всё застопорилось. 

Как таблицу seanses заполнить таким образом, чтобы вручную вводить только start, а stop рассчитывался из условий: start + duration(продолжительность сеанса из таблицы films)?

Какие будут предлложения по определению структуры оставшейся части БД?

Автор: batigoal 22.4.2007, 20:11
Цитата(SymplyFying @  20.4.2007,  16:27 Найти цитируемый пост)
Как таблицу seanses заполнить таким образом, чтобы вручную вводить только start, а stop рассчитывался из условий: start + duration(продолжительность сеанса из таблицы films)?

Триггером.

Автор: Glip 22.4.2007, 21:52
Цитата(SymplyFying @  20.4.2007,  15:27 Найти цитируемый пост)
 /*В результате нормализации таблиц поле "продолжительность" - было решено убрать из данной таблицы*/

а почему? задача поставлена что продолжительность сеанса == продолжительности фильма ?
в жизни-то оно не так smile

Добавлено через 4 минуты и 38 секунд
я бы еще

  /*жанр*/

  /*актёры*/

  /*производитель*/

  /*страна*/

сделал разными таблицами.
в актёрах там вообще будет многие-ко-многим
жанров тоже к фильму можно привязать несколько.

Автор: SergeBS 23.4.2007, 11:40
SymplyFying, 
Вообще-то тебе в http://forum.vingrad.ru/forum/Vingrad-help-center.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)