![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| yalo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 24.5.2006 Репутация: нет Всего: 2 |
Хочу совета от профессионалов, как запрограммировать в общих чертах и построить БД для моего случая. Есть сайт. На этом сайте будет вывешиваться программа на неделю для разных каналов в виде:
Канал 1 День недели (если не выбран специально, то текущий), число. 06.00 какая-нибудь передача 06.30 Х/ф ... 04.30 передача Канал 2 День недели (если не выбран специально, то текущий), число. 06.10 какая-нибудь передача 06.40 Х/ф ... 02.30 погода и т.п. ... Сверху программы что-то вроде календаря с днями недели, дни недели - ссылки, текущий день - не ссылка, щелкая на нужный пользователю день программа заменяется на программу щелкнутого дня в том же виде как указано выше. Администратор сайта будет принимать файл с программой в таком виде: ПОНЕДЕЛЬНИК, 17.07.2006. ПРИМА 06.00 Х/ф "КАК СКАЗАЛ ДЖИМ". 06.40 М/ф "У страха глаза велики". 06.55 М/ф "Смешарики". 07.00 33 квадратных метра. 07.30, 18.30, 23.00 Х/ф "МОЯ ПРЕКРАСНАЯ НЯНЯ". 08.00, 20.00 Х/ф "НЕ РОДИСЬ КРАСИВОЙ". 09.00, 19.30 Детали. 09.30, 18.00 Х/ф "КТО В ДОМЕ ХОЗЯИН?" 10.00 Х/ф "ЛЮБОВНИЦА". 12.00 Х/ф "ТАЛИСМАН ЛЮБВИ". 13.00 Х/ф "НОВАЯ СЕМЕЙКА АДДАМС". 13.30 М/ф "Экскалибур". 14.00 М/ф "Смешарики". 14.05 М/ф "Принцесса Сисси". 14.30 М/ф "Самурай Икс". 15.00 М/ф "Лига Справедливости". 15.30 М/ф "Люди Икс. Эволюция". 16.00 Х/ф "ЛИЗЗИ МАГУАЙЕР". 16.30 Х/ф "ШКОЛА "ЧЕРНАЯ ДЫРА". 17.00 Х/ф "ЗАЧАРОВАННЫЕ". 19.00, 23.30 Новости. 21.00 Х/ф "ОТЧАЯННЫЕ ДОМОХОЗЯЙКИ". 00.00 Х/ф "ЧАСТИ ТЕЛА". 01.00 Х/ф "VERITAS. В ПОИСКАХ ИСТИНЫ". 01.45 Х/ф "МАЯТНИК". 03.15 Х/ф "ТЕСНАЯ КОМПАНИЯ". 03.35 Х/ф "ДЕТЕКТИВНОЕ АГЕНТСТВО "ЛУННЫЙ СВЕТ". 05.10 Музыка на канале. ВТОРНИК, 18.07.2006. ПРИМА 06.00 Х/ф "КАК СКАЗАЛ ДЖИМ". 06.40 М/ф "Машенькин концерт". 06.55 М/ф "Смешарики". 07.00, 19.00, 23.30 Новости. 07.30, 18.30, 23.00 Х/ф "МОЯ ПРЕКРАСНАЯ НЯНЯ". 08.00, 20.00 Х/ф "НЕ РОДИСЬ КРАСИВОЙ". 09.00, 19.30 Детали. 09.30, 18.00 Х/ф "КТО В ДОМЕ ХОЗЯИН?" 10.00 Х/ф "ЛЮБОВНИЦА". 11.45 М/ф "Ну, погоди!" 12.00 Х/ф "ТАЛИСМАН ЛЮБВИ". 13.00 Х/ф "НОВАЯ СЕМЕЙКА АДДАМС". 13.30 Хит-парад мобильных мелодий. 13.45 Мультфильмы. 14.00 М/ф "Смешарики". 14.05 М/ф "Принцесса Сисси". 14.30 М/ф "Самурай Икс". 15.00 М/ф "Лига Справедливости". 15.30 М/ф "Люди Икс. Эволюция". 16.00 Х/ф "ЛИЗЗИ МАГУАЙЕР". 16.30 Х/ф "ШКОЛА "ЧЕРНАЯ ДЫРА". 17.00 Х/ф "ЗАЧАРОВАННЫЕ". 21.00 Х/ф "ОТЧАЯННЫЕ ДОМОХОЗЯЙКИ". 00.00 Х/ф "ЧАСТИ ТЕЛА". 01.00 Х/ф "VERITAS. В ПОИСКАХ ИСТИНЫ". 01.50 Х/ф "ИСТОРИЯ СОЛДАТА". 03.25 Х/ф "ТЕСНАЯ КОМПАНИЯ". 03.45 Х/ф "ТАКСИСТ". 05.20 Музыка на канале. ... ВОСКРЕСЕНЬЕ, 23.07.2006. ПРИМА 06.00 Х/ф "АЛИСА В ЗАЗЕРКАЛЬЕ". 07.25 М/ф "Золотая антилопа". 07.55 М/ф "Пиноккио". 08.20 М/ф "Смешарики". 08.30 "Улица Сезам". 09.00 М/ф "Гаджет и Гаджетины". 09.30 Х/ф "ДЕТИ НА ОСТРОВЕ СОКРОВИЩ. БИТВА". 11.30 "Детали". 12.00 Жизнь прекрасна. 14.00 Снимите это немедленно. 15.00 Д/ф ВВС. "Мифы и герои. Ясон и золотое руно". 16.00 Адрич - новый формат. 16.30 Х/ф "МОЯ ПРЕКРАСНАЯ НЯНЯ". 17.00 Х/ф "ДАША ВАСИЛЬЕВА. ЛЮБИТЕЛЬНИЦА ЧАСТНОГО СЫСКА". 21.00 Х/ф "ЗАКОНЫ ПРИВЛЕКАТЕЛЬНОСТИ". 22.45 Х/ф "ИСТОРИЯ С ОЖЕРЕЛЬЕМ". 01.15 Х/Ф "ПОРТНОЙ ИЗ ПАНАМЫ". 03.05 Х/Ф "ПОРТРЕТ ВАМПИРА" 04.30 Д/ф ВВС. "Неандерталец". 05.20 Музыка на канале. На каждый канал - по отдельному файлу. Вообще начала делать так. Поля в соответствующей таблице tvprog в БД сделала следующие `channel` , `day1` , `day2` , `day3` , `day4` , `day5` , `day6` , `day7` , `ord` Администратор получая файл разрывает его на массив через split("\r\n\r\n", $str_from_file) и вставляет в бд в поля `day1` , `day2` , `day3` , `day4` , `day5` , `day6` , `day7`, в `channel` вставляю канал, который вытащила из нулевого (хотя можно из любого судя по файлу) элемента массива через split("\r\n", $day[0]) . В `ord` будет записываться и, если нужно - изменяться администратором, порядок следования каналов в программе. В общем такое начало. Потихоньку делаю дальше, но грызут сомнения, вдруг есть более оптимальный вариант как построить бд, как раздроблять файлы с программами и вообще.. Разумеется, я не прошу код, это нелепо, а просто в общих чертах построение алгоритма, словесных набросков, может БД как-то оптимальней придумать... И еще - TV-программу достаточно хранить только на текущую неделю, а как только администратор загружает новый файл, поля в бд обновляются по нужному каналу... Очень хочется услышать мнение и советы от профессионалов Это сообщение отредактировал(а) yalo - 31.10.2006, 17:18 |
|||
|
||||
| SelenIT |
|
||||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 9 Всего: 401 |
yalo, как правило лучше разные сущности хранить раздельно, одинаковые и очень похожие - вместе. Каждую единицу одной сущности желательно хранить в отдельной ячейке. На эту тему есть целая теория - нормализация БД.
В данном случае есть 2 сущности - каналы и передачи. Их лучше хранить в разных таблицах. Каналы (tvprog_channels): channel_id (INT, PRIMARY KEY, AUTO_INCREMENT), name (VARCHAR(50) - должно хватить), ord (INT) Передачи (tvprog_items): channel_id (INT), item (VARCHAR(255)), starttime (DATETIME). Такая структура будет очень гибкой - она никак не ограничивает ни период хранения, ни количество каналов. Нет путаницы между передачами на текущую и прошлую неделю - они различаются полем starttime. А вот примеры запросов к такой базе: - что идет в данный момент по каналу "ПРИМА":
- когда и по каким каналам на этой неделе еще будут передачи, в названии которых есть слово "Икс":
Неужели не удобно? -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
||||
|
|||||
| yalo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 24.5.2006 Репутация: нет Всего: 2 |
Пребольшое спасибо!!! По-моему оч удобно, как и подозревала - действительно существует более здравое решение
Это сообщение отредактировал(а) yalo - 1.11.2006, 06:02 |
|||
|
||||
| CyClon |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
Я думаю, что базу организовать так:
Для каждого канала - своя таблица... Каждая ячейка таблицы - определенный день... Вытягивает, например, программу для первого канала на 01.01.2007
Где `info` - поле типа
Потом explode, сформировать данные и закешировать в файл (Чтобы каждый раз не делать explode и не обращаться к базе)... Ну, а там уже дело техники. Добавлено @ 14:53 Вариант SelenIT тоже, очень удобный |
||||
|
|||||
| yalo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 24.5.2006 Репутация: нет Всего: 2 |
Вообще были мысли сделать для каждого канала свою таблицу, но откинула по следующим соображениям (возможно ошибочным? и интересно знать верны были мои предположения или нет..).
Во-первых, каналов может быть много и они могут нарастать, мне показалось, что плодить таблицы в базе до неизвестного числа не оч целесообразно... возможно ошибаюсь..? Затем на день будут выводиться все каналы сразу, получается нужно обращаться к каждой таблице для каждого канала поочереди (помимо того, что придется также весь список каналов еще вытаскивать, т.к. надо знать к каким таблицам-каналам обращаться, каналы ведь могут все появляться и появляться и об их пополнении будем узнавать из того самого текстового файла, из его второй строки: ПОНЕДЕЛЬНИК, 17.07.2006. ПРИМА 06.00 Х/ф "КАК СКАЗАЛ ДЖИМ". 06.40 М/ф "У страха глаза велики". ) Не скажется ли на скорости такое поочередное обращение к большому количеству каналов-таблиц? На данный момент каналов на сайте будет уже 10 штук, и они могут увеличиваться, т.е. уже 10 таблиц только для каналов, 11 обращений для вывода как минимум... Предложение SelenIT мне действительно оч понравилось, уже пишу так, как он посоветовал и пока не нарадуюсь, но все же интересно было бы узнать - верны ли мои возражения CyClon'у или нет? и если нет, то почему Это сообщение отредактировал(а) yalo - 2.11.2006, 08:51 |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 17 Всего: 69 |
Бред! Еще бредовей бред Верны. SelenIT, предложил действительно оптимальный вариант. -------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| yalo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 24.5.2006 Репутация: нет Всего: 2 |
Всем спасибо!
|
|||
|
||||
| ТРЕТЬ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 8.1.2006 Где: mind's gloomy corner Репутация: нет Всего: 1 |
немного запоздало, но все-таки предложу свой вариант...
Создаем столько таблиц, сколько каналов и даем им одноименные названия (всмысле как канал называется, так и таблица, чтобы потом не думать какая таблица к чему относится) В каждой таблице 2 столбца - в первом день недели и число (месяц, год и т.д.)... Тип ячеек - char (20) во втором - время передачи и её название... Тип - char (200) В итоге таблица заполняется чем-то вроде Date | Prog ВТОРНИК, 18.07.2006 | 06.00 Х/ф "КАК СКАЗАЛ ДЖИМ". ВТОРНИК, 18.07.2006 | 06.40 М/ф "Машенькин концерт". ВТОРНИК, 18.07.2006 | 06.55 М/ф "Смешарики". ВТОРНИК, 18.07.2006 | 07.00, 19.00, 23.30 Новости. ВТОРНИК, 18.07.2006 | 07.30, 18.30, 23.00 Х/ф "МОЯ ПРЕКРАСНАЯ НЯНЯ". .... ВОСКРЕСЕНЬЕ, 23.07.2006 | 06.00 Х/ф "АЛИСА В ЗАЗЕРКАЛЬЕ". ВОСКРЕСЕНЬЕ, 23.07.2006 | 07.25 М/ф "Золотая антилопа". ВОСКРЕСЕНЬЕ, 23.07.2006 | 07.55 М/ф "Пиноккио". ВОСКРЕСЕНЬЕ, 23.07.2006 | 08.20 М/ф "Смешарики". ВОСКРЕСЕНЬЕ, 23.07.2006 | 08.30 "Улица Сезам". .... А потом делаем выборку по точному совпадению даты (главное определиться какой формат хочешь использовать, и используй его везде таким)... Например
Еще, пожалуй, стоит создать таблицу со списком каналов - она заодно станет соединяющей таблицей... Вроде, должно получиться просто и сердито... |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 9 Всего: 401 |
ТРЕТЬ, по-моему то, что Вы предложили, извините, просто ужас:
Это сообщение отредактировал(а) SelenIT - 2.11.2006, 19:33 -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| yalo |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 24.5.2006 Репутация: нет Всего: 2 |
SelenIT, я использую твой первоначальный совет как организовать БД, предложения подобные предложениям ТРЕТЬ и CyClon'а откинула сразу, т.к. самые первые мысли были похожи на их предложения, но интуитивно поняла, что так нельзя.. Я к чему - хотелось бы не только интуитивно понимать многие вещи
ты не мог бы посоветовать такую литературу, лучше, конечно, электронный вариант, но если что, то рассматриваю и покупку через инет (ждать просто не хочется), т.к. по большей части наталкиваюсь на обычную документацию, в которой нахожу команды SQL и т.п. вещи, а вот теория БД не попадалась |
|||
|
||||
| -=Ustas=- |
|
|||
![]() Ustix IT Group ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2222 Регистрация: 21.1.2005 Где: Краснодар Репутация: 17 Всего: 69 |
-------------------- В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм. ----- |
|||
|
||||
| ТРЕТЬ |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 92 Регистрация: 8.1.2006 Где: mind's gloomy corner Репутация: нет Всего: 1 |
SelenIT, просто я видимо что-то пропустил... Я думал, вся функцианальная часть - вывод программы на выбранный день... Т.е. не надо отделать передачу от её времени и тому подобное... Насчет даты кстати согласен, можно было ей тип даты присвоить...
ЗЫ, все равно я лол пока что=)) |
|||
|
||||
| SelenIT |
|
|||
![]() баг форума ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3996 Регистрация: 17.10.2006 Где: Pale Blue Dot Репутация: 9 Всего: 401 |
ТРЕТЬ,
Если бы было так, зачем вообще БД, почему бы напрямую не воспользоваться текстовым файлом? ;) Да и для вывода удобнее держать их по раздельности - например, для вывода в HTML-таблицу или просто с разным оформлением... -------------------- Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму! |
|||
|
||||
| CyClon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 838 Регистрация: 3.12.2005 Репутация: нет Всего: 4 |
На счет моего варианта, хз, скорее я не прав, т.к. с базой работал относительно мало на практике, но все-таки увеличение числа таблиц вляет только на то "что их много". Таблиц будет много, но они будут мальенькими, в отличие одной, но большой таблицы.
|
|||
|
||||
| yalo |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 210 Регистрация: 24.5.2006 Репутация: нет Всего: 2 |
У меня с запросами к построенной базе возникают проблемы:
при запросах типа
и
sql выдает ошибку типа Unknown table 'c' in field list когда ухожу от сокращений sql приходит к ошибке типа Unknown column 'gz_tvprog_items.starttime' in 'where clause' Даже при составлении простого запроса
sql все равно выдает ошибку #1054 - Unknown column 'starttime' in 'where clause' В общем ему не нравится та колонка starttime:( у меня вся таблица вплоть до названий постороена по предложению SelenIT, за исключением того, что для собственных нужд к названиям таблиц добавлен префикс gz_ И еще. Обрабатываемый файл с программой превращается в результате различных манипуляций в строки, записывающиеся в базу таким образом: channel_id | item | starttime 3 | Новости. | 2006-07-18 19:00:00 Это сообщение отредактировал(а) yalo - 7.11.2006, 10:33 |
||||||
|
|||||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |