Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Подскажите, плз, структуру таблиц.
 
 автор: Antohsa   (21.01.2011 в 04:23)   письмо автору
 
 

Здравствуйте, всем.

Начинаю писать свои компоненты.

Суть в том:
Есть год. У каждого года есть свои события и люди (то бишь люди года и события года), есть месяца, в которых также могут быть события и люди, которые в свою очередь могу быть событиями и людьми года, а также есть дни, которые также содержат события и людей, которые в свою очередь могут быть событиями месяца и года.

Подскажите, пожалуйста, как лучше организовать структуру таблиц для таких данных. По идеи должны быть только 2 таблицы: "события" и "люди", которые как-то упорядочиваются по датам.

Какую структуру выбрать?

Заранее, спасибо.

  Ответить  
 
 автор: lightning.say   (21.01.2011 в 05:55)   письмо автору
 
   для: Antohsa   (21.01.2011 в 04:23)
 

если одна таблица люди:
фио, год, месяц , день
другая таблица события
название сбытия, год, месяц, день

  Ответить  
 
 автор: Antohsa   (21.01.2011 в 15:02)   письмо автору
 
   для: lightning.say   (21.01.2011 в 05:55)
 

Но одно и то же событие и человек может принадлежать разным датам? Как быть?

  Ответить  
 
 автор: Trianon   (21.01.2011 в 15:03)   письмо автору
 
   для: Antohsa   (21.01.2011 в 15:02)
 

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

  Ответить  
 
 автор: Antohsa   (21.01.2011 в 15:06)   письмо автору
 
   для: Trianon   (21.01.2011 в 15:03)
 

Да. Событие не может быть принадлежать разным датам, согласен.

Но человек то может? Ну там человек 2000 года, а потом он же и 2003, например, и т.д.

  Ответить  
 
 автор: Trianon   (21.01.2011 в 15:10)   письмо автору
 
   для: Antohsa   (21.01.2011 в 15:06)
 

у человека имя и фамилия есть, а не то, какого он года. Вот они то и будут жить в таблице.

А то что Человек A фигурирует в году B - описыватся событием C.
Обычное отношение многие ко многим (M:N) через связующую таблицу.
Она и будет таблицей событий.

  Ответить  
 
 автор: Antohsa   (21.01.2011 в 15:15)   письмо автору
 
   для: Trianon   (21.01.2011 в 15:10)
 

События и человек вообще никак не связаны... Например, 1941 год - событие года начало ВОВ, человек года Адольф Гитлер, тут просто совпало, а скажем 2020 год - ядерная война, а человек года пусть будет тот, кто придумает Машину Времени.

Вы как-то все усложняете для меня... =)))

  Ответить  
 
 автор: Trianon   (21.01.2011 в 15:41)   письмо автору
 
   для: Antohsa   (21.01.2011 в 15:15)
 

с такими примерами, пожалуй, я и вправду лучше в сторонке пешком постою.

  Ответить  
 
 автор: Antohsa   (21.01.2011 в 16:01)   письмо автору
 
   для: Trianon   (21.01.2011 в 15:41)
 

=))) ну примеры просто быстро придуманные...

но все-таки проблема осталась: один и тот же человек может "принадлежать" разным датам

  Ответить  
 
 автор: lightning.say   (21.01.2011 в 17:17)   письмо автору
 
   для: Trianon   (21.01.2011 в 15:03)
 

Так у него события и люди существуют вне зависимости друг от друга изначально, а вы предлагаете на каждого человека ввести по событию и связать с датой, и не на каждое событие имеется личность отличившаяся в определенное время, ее тоже надо придумать?

  Ответить  
 
 автор: Antohsa   (21.01.2011 в 17:31)   письмо автору
 
   для: lightning.say   (21.01.2011 в 17:17)
 

Верно.

Trianon додумывает и меняет задачи за меня. =)))))

  Ответить  
 
 автор: lightning.say   (21.01.2011 в 17:44)   письмо автору
 
   для: Antohsa   (21.01.2011 в 17:31)
 

мож действительно будет три таблицы, как такой вариант?

событие

id | event_name

дата

data | man_id | event_id

люди

id | man_name

  Ответить  
 
 автор: Antohsa   (21.01.2011 в 17:48)   письмо автору
 
   для: lightning.say   (21.01.2011 в 17:44)
 

тогда в таблице с датами man_id и event_id должны содержать множества с из id людей и событий?

Как это реализовать? Записывать через точку запятой и разбирать путем PHP?

  Ответить  
 
 автор: lightning.say   (21.01.2011 в 18:02)   письмо автору
 
   для: Antohsa   (21.01.2011 в 17:48)
 

можно хранить в ячейке массив, но не знаю насколько это правильно в данном случае
1, 2, 5, 7
потом обработка $mas = explode(",", $row['man_id']);

мож кто-то придумает более верное решение....

  Ответить  
 
 автор: Antohsa   (21.01.2011 в 18:33)   письмо автору
 
   для: lightning.say   (21.01.2011 в 18:02)
 

а MySQL выборку потом можно будет делать типа where id= array() ?

  Ответить  
 
 автор: Igorek   (21.01.2011 в 06:51)   письмо автору
 
   для: Antohsa   (21.01.2011 в 04:23)
 

Event:
id | man_id | event_name | date

Man:
id | FIO

надо выборку по годам -
"WHERE YEAR(date) = year"

по месяцам -
"WHERE YEAR(date) = year AND MONTH(date) = month"

  Ответить  
 
 автор: lightning.say   (21.01.2011 в 07:42)   письмо автору
 
   для: Igorek   (21.01.2011 в 06:51)
 

т.е. события и люди будут иметь одинаковый год, месяц или день? а если разные?

  Ответить  
 
 автор: Igorek   (21.01.2011 в 08:07)   письмо автору
 
   для: lightning.say   (21.01.2011 в 07:42)
 

может я не до конца понял условие, но в любом случае - событие это определенная дата. я так понял

  Ответить  
 
 автор: Косорылый   (21.01.2011 в 10:17)   письмо автору
 
   для: Antohsa   (21.01.2011 в 04:23)
 

Какое-то отношение события и люди имеют друг к другу ?
или надо вывести только то что совпало по времени?

  Ответить  
 
 автор: Antohsa   (21.01.2011 в 15:03)   письмо автору
 
   для: Косорылый   (21.01.2011 в 10:17)
 

Никакого... В принципе могут быть взаимосвязаны конечно, но по сути никакого.

Надо вывести только то, что совпало по дате. Верно.

  Ответить  
 
 автор: Trianon   (21.01.2011 в 10:42)   письмо автору
 
   для: Antohsa   (21.01.2011 в 04:23)
 

и третью таблицу - временнЫх фильтров.
Сперва хотел написать - временнЫх диапазонов, но почитав обсуждение, засомневался, может и вправду речь идет о наборах дат.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования