Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вопрос по структуре БД / 4 сообщений из 4, страница 1 из 1
21.11.2017, 15:48
    #39556972
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по структуре БД
Нужно на скорую руку сделать на сайте ТВ-программу.
Саму программу передач получаем в специализированном сервиса в таком виде:

Список каналов:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<Index>
  <File>
    <Name>http://site.ru/export/***/epg/***.xml</Name>
    <EfirWeek>2017-11-20</EfirWeek>
    <Channel>Первый</Channel>
    <ChannelID>1TV</ChannelID>
    <DateTime>21.11.2017 10:11:53</DateTime>
  </File>
  <File...>
</Index>



Список программ:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
<tv>
  <channel id="1TV">
    <display-name lang="ru">Первый</display-name>
    <icon src="http://site.ru/logo/1tv_w90_h90.jpg"/>
  </channel>
  <programme start="20171120050000 +0300" stop="20171120090000 +0300" channel="1TV">
    <title lang="ru">Телеканал "Доброе утро"</title>
    <desc lang="ru">Встречайте утро вместе с известными артистами, спортсменами и учеными, узнавайте самые важные и интересные новости, учитесь готовить вкусную еду и набирайтесь опыта в самых неожиданных областях!</desc>
    <credits>
      <presenter>Лариса Вербицкая</presenter>
      <presenter>Светлана Зейналова</presenter>
      <presenter>Екатерина Стриженова</presenter>
      <presenter>Арина Шарапова</presenter>
      <presenter>Юлия Зимина</presenter>
      <presenter>Екатерина Мцитуридзе</presenter>
      <presenter>Антон Привольнов</presenter>
      <presenter>Тимур Соловьев</presenter>
      <presenter>Елена Чекалова</presenter>
      <presenter>Ольга Никишичева</presenter>
      <presenter>Дмитрий Талабуев</presenter>
      <presenter>Роман Будников</presenter>
      <presenter>Дильбар Файзиева</presenter>
      <presenter>Анастасия Трегубова</presenter>
      <presenter>Марина Ким</presenter>
      <presenter>Сергей Бабаев</presenter>
    </credits>
    <date>2017-11-20</date>
    <category lang="ru">Досуг</category>
    <category lang="ru">Развлекательно-познавательное</category>
    <year>2017</year>
    <country lang="ru">Россия</country>
    <production lang="ru">Первый канал</production>
  </programme>
  <programme...>
</tv>


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

Подскажите, как будет лучше сделать?

1. Нормализовать все данные и всю программу передач полностью хранить в БД. Мне этот вариант не очень нравится, потому что структура XML-файла достаточно гибкая и нормализованная БД получится громоздкой и не очень удобной в использовании.

2. Хранить в БД список каналов, таймштампы обновлений и ссылки на XML-файлы с программой передач.

3. Хранить в БД список каналов, оглавления передач (название, время начала, время окончания), таймштампы обновлений и ссылки на XML-файлы с программой передач.
...
Рейтинг: 0 / 0
21.11.2017, 17:14
    #39557047
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по структуре БД
Склоняюсь к третьему варианту.
Просьба покритиковать:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
CREATE TABLE `EPG` (
	`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'Числовой ключ.',
	`channel_id` INT(10) UNSIGNED NOT NULL COMMENT 'Ссылка на канал.',
	`date` DATE NOT NULL COMMENT 'Дата передачи (день).',
	`tzm` SMALLINT(5) NOT NULL COMMENT 'Часовой пояс (смещение в минутах).',
	`start` DATETIME NOT NULL COMMENT 'Начало передачи (дата и время).',
	`stop` DATETIME NOT NULL COMMENT 'Окончание передачи (дата и время).',
	`title` VARCHAR(200) NOT NULL COMMENT 'Заголовок передачи.',
	`subtitle` VARCHAR(200) NULL DEFAULT NULL COMMENT 'Подзаголовок передачи.',
	`presenter` VARCHAR(200) NULL DEFAULT NULL COMMENT 'Ведущий (несколько значений разделяются запятыми)..',
	`icon` VARCHAR(200) NULL DEFAULT NULL COMMENT 'Иллюстрация к анонсу (URL).',
	`description` VARCHAR(200) NULL DEFAULT NULL COMMENT 'Описание передачи.',
	`details` TEXT NULL COMMENT 'Анонс передачи.',
	`category` VARCHAR(200) NULL DEFAULT NULL COMMENT 'Категория (несколько значений разделяются запятыми).',
	`year` SMALLINT(4) UNSIGNED NULL DEFAULT NULL COMMENT 'Год производства.',
	`country` VARCHAR(80) NULL DEFAULT NULL COMMENT 'Страна производства.',
	`production` VARCHAR(80) NULL DEFAULT NULL COMMENT 'Производитель.',
	`rating` VARCHAR(80) NULL DEFAULT NULL COMMENT 'Возрастной рейтинг.',
	`xml` TEXT NULL COMMENT 'XML-узел programme.',
	PRIMARY KEY (`id`),
	INDEX `channel_id` (`channel_id`),
	INDEX `date` (`date`),
	INDEX `start` (`start`),
	INDEX `stop` (`stop`),
	CONSTRAINT `FK_EPG_CHANNEL` FOREIGN KEY (`channel_id`) REFERENCES `CHANNEL` (`id`)
)
COMMENT='Программа передач EPG.'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
...
Рейтинг: 0 / 0
22.11.2017, 00:22
    #39557228
MikkiMouse
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по структуре БД
Alibek B.,

Возьми монгу и храни тупо программы по датам и каналам
...
Рейтинг: 0 / 0
22.11.2017, 10:12
    #39557316
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по структуре БД
MikkiMouseВозьми монгу и храни тупо программы по датам и каналам
Да, про такое я не подумал. Возможно это будет подходящим решением.
Но с Mongo у меня были сложности со связыванием данных из разных коллекций (аналог join), а мне такое скорее всего потребуется.
В рамках использования реляционной СУБД выбранная схема нормальная? Или что-то лучше поменять?
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вопрос по структуре БД / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]