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

Форум MySQL

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

 

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

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

тема: База данных одноклассников
 
 автор: Dizels   (29.09.2007 в 22:04)   письмо автору
 
 

Необходимо сделать сервис, который в некотором роде напоминает однокласники.ру, т.е.:

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

Так вот, у меня возникли проблемы при составлении таблиц - прошу помочь мне.

Таблица города:
состоит из полей ------ id_sity -------- name -------- id_parent
пример ----------------------1------------ Россия-------------0
---------------------------------- 2 ------------ Москва-------------1


Таблица пользователь:
состоит из полей------ id_user----- login----passw ------e-mail -------surname-----name----otchestvo
пример-----------------------1--------- test--------123------ sd@fg.ru------Иванов-------Иван----Иванович

Таблица учебные заведения:
состоит из полей---------id_zav -------name------------obrazov---------------- id_sity
пример------------------------1--------школа №2--------среднее-------------------2(т.е. Москва)
-------------------------------------2------------МГУ-------------высшее--------------------2


Таблица класс/группа:
состоит из полей----------id_class-------number----letter------id_zav -------------------vupysk(год выпуска)
пример---------------------------1--------------11---------- А---------1(т.е. шк №2)------------2002
----------------------------------------2-------------503---------- К---------2(т.е. МГУ) --------------2007


Так вот, проблема в том, что пользователь может учиться в нескольких заведениях, как это правильно реализовать? Т.е. на данном примере Иванов Иван Иванович учился в шк№2 и потом же учился в МГУ, как все это правильно записать и куда?

   
 
 автор: sim5   (29.09.2007 в 22:10)   письмо автору
 
   для: Dizels   (29.09.2007 в 22:04)
 

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

   
 
 автор: Dizels   (29.09.2007 в 22:21)   письмо автору
 
   для: sim5   (29.09.2007 в 22:10)
 

Ну тогда нужны еще поля отражающие края, области, райны

Я планировал сделать вот так:
Таблица города:
состоит из полей ------ id_sity -------- name ------------- id_parent
пример ----------------------1-------------- Россия----------------0
--------------------------------- 2 ------------ Москва------------------1
----------------------------------3---Белгородская область------1(т.е. относится к России)
----------------------------------4-------------Белгород---------------3(т.е. относится к Белгородской обл.)


Есть поле где отражена школа где учился, ничего не стоит добавить поле где бы указывался ВУЗ в котором он учился после, а может и нынешнее место работы и т.д.

Не совсем понял что Вы имеете ввиду, но приведу пример:
Допустим, я до 8 класса учился в школе №1, после 8 класса я учился в школе №2. После школы я поступил в МГУ закончив МГУ я поступил еще в какой-нибудь универ.
Вот как мне занести все эти 4 учебных заведения?

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

   
 
 автор: sim5   (30.09.2007 в 00:07)   письмо автору
 
   для: Dizels   (29.09.2007 в 22:21)
 

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


Таблица country // страны
-------------------------
id | name  
-------------------------
1  | Россия
2  | Украина
3  | Белоруссия
.... и т.д.

Таблица state // области, края
--------------------------------------
id  | name         | parent
--------------------------------------
1   | Московская   | 1 
2   | Белгородская | 1
...........................
13 | Киевская      | 2
.... и т.д.

Таблица city // город, поселок и т.д.
--------------------------------------
id  | name      | parent
--------------------------------------
1   | Москва    | 1 
2   | Белгород  | 2
...........................
44 | Киев       | 13
.... и т.д.

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

Что касается школ. Ну можно все учебные заведения хранить в одном поле, разделив записи разделителем, а потом получать из этой строки массив по этому разделителю. Но вот вносить эти записи пользователю нужно будет в раздельных полях (чтобы избежать при приеме парсинга регулярными выражениями), а для этого нужно будет воспользовать JS, где бы пользователь мог динамически добавлять новые поля для ввода. Хотя нарушить правило не трудно, просто введя в поле сразу весь список школ. Поэтому если учился он в нескольких школах - пусть и перечисляет в строке - ее и выведите, я думаю вам ведь просто нужна информация, и не требуется производить какие либо действия над этими данными. Тогда все просто, сохраняете эту строку в соответсвующем поле таблицы и все.

   
 
 автор: Dizels   (30.09.2007 в 11:34)   письмо автору
 
   для: sim5   (30.09.2007 в 00:07)
 


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


В том то и дело, что требуется - к примеру выводить всех пользователей, которые учились в этом же заведении(не обязательно в том же классе) и т.д., т.е. данные должны заносится так, чтобы с ними можно было потом легко работать, собственно именно поэтому у меня проблемы и возникли:)

   
 
 автор: sim5   (30.09.2007 в 12:25)   письмо автору
 
   для: Dizels   (30.09.2007 в 11:34)
 

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

   
 
 автор: Dizels   (30.09.2007 в 12:29)   письмо автору
 
   для: sim5   (30.09.2007 в 12:25)
 

sim5, посмотрите плз мой первый пост - там такая таблица есть.

Мне не понятно другое - как реализовать запись/хранение/вывод данных о том, что пользователь мог учиться в нескольких заведениях?

   
 
 автор: sim5   (30.09.2007 в 12:39)   письмо автору
 
   для: Dizels   (30.09.2007 в 12:29)
 

А как вы будете учитывать заведения, кроме номера, есть ведь и разница в названиях - школа, колледж, лицей и бог весть чего еще сейчас есть?

   
 
 автор: Dizels   (30.09.2007 в 12:48)   письмо автору
 
   для: sim5   (30.09.2007 в 12:39)
 

Ну вот названия для меня как раз-таки не важны, для этого есть пункт name и вот туда можно писать школа № 1 или колледж 2 и т.д., да и собственно вопрос у меня другой, поэтому давайте не будем отвлекаться!

   
 
 автор: sim5   (30.09.2007 в 13:00)   письмо автору
 
   для: Dizels   (30.09.2007 в 12:48)
 

>поэтому давайте не будем отвлекаться!

Даже так?)) Ну тогда думайте как, а я не представляю, как потом нужно найти то, неважно что.

   
 
 автор: Jura   (30.09.2007 в 12:53)   письмо автору
 
   для: Dizels   (29.09.2007 в 22:04)
 

Идея неплохая, но зачем изобретать велосипед. [url]vcontacte.ru[/url]

   
 
 автор: Dizels   (30.09.2007 в 13:20)   письмо автору
 
   для: Jura   (30.09.2007 в 12:53)
 

Jura, спс за ссылку, однако мне нужно самому реализовать это.
sim5, не обижайся:) Я просто хочу, чтобы ответили на мой вопрос:) Вот смотри, ученое заведение(школа, институт или еще что - не важно, в общем все их я буду называть учебное заведение) нам всегда известно, так как у каждого заведения вне зависимости от его месторасположения и т.д. есть уникальный параметр id_zav. Уже саму таблицу заведений я если что потом подправлю, сейчас же меня интересует, как к пользователю можно прикрепить несколько учебных заведений.

   
 
 автор: Jura   (30.09.2007 в 13:26)   письмо автору
 
   для: Dizels   (30.09.2007 в 13:20)
 

прикрепить несколько заведений легко.

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

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

   
 
 автор: Dizels   (30.09.2007 в 13:48)   письмо автору
 
   для: Jura   (30.09.2007 в 13:26)
 

Т.е. получается примерно так?

Таблица учебные заведения:
состоит из полей---------id_zav -------name------------obrazov---------------- id_sity
пример------------------------1--------школа №2--------среднее-------------------2(т.е. Москва)
-------------------------------------2------------МГУ-------------высшее--------------------2

Таблица пользователь:
состоит из полей------ id_user----- login----passw ------e-mail -------surname-----name----otchestvo
пример-----------------------1--------- test--------123------ sd@fg.ru------Иванов-------Иван----Иванович

Таблица связи:
состоит из полей-------id_user--------id_zav
пример-------------------------1---------------2
------------------------------------1---------------1

Вот таким образом? Я все правильно понял?

   
 
 автор: Jura   (30.09.2007 в 13:58)   письмо автору
 
   для: Dizels   (30.09.2007 в 13:48)
 

Да... все правильно.

   
Rambler's Top100
вверх

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