Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Хранить в БД или нет
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Хранить в БД или нет

Страниц (1): [1]
 

1. vanicon - 12 Сентября, 2011 - 16:28:06 - перейти к сообщению
Есть портал(пока в разработке), и там можно будет добавляться в друзья, общаться между друзьями и тд.
И у меня перед всем этим есть несколько вопросов где хранить данные типа:
логин|друг(логин)
и всякое такое, можно хранить все это и в БД но это будет хорошо работать если пользователей будут около 5-10 тыс, и у всех у них будут друзья и тд. Может быть хранить все это дело в xml файлах(создавать отдельно для каждого пользователя по 1 xml файлу) и там хранить логины его друзей, общую информацию о пользователю и тд. И потом парсить все это(с помощью SimpleXml) и делать манипуляции этих данных и тд. Просто хочется сделать сразу как следует чтобы потом не пришлось все напрочь переделывать или создавать все по новой... Может кто поможет советом, как мне быть.
2. LIME - 12 Сентября, 2011 - 16:33:37 - перейти к сообщению
только БД без вариантов
(Добавление)
если база будет небольшой - SQLite
3. vanicon - 12 Сентября, 2011 - 18:10:15 - перейти к сообщению
Цитата:
только БД без вариантов

Допустим у пользователя будет 2000-4000 тыс друзей и если делать одну таблицу для ВСЕХ друзей такого типа:
логин(пользователя) | логин(друга)
ivan misha
и таких строк будет около 2-4 тыс.
А если сделать сортировку по алфавиту, допустим по первой букве логина пользователя и для каждой буквы создать отдельную такую таблицу, то там полей конечно будет меньше, так как там будет храниться только та группа пользователей у которых буква начинается на "i" допустим и тд. Но все же и там со временем будет полей не мало...
Или же можно как - то по другому все это реализовать?
4. LIME - 12 Сентября, 2011 - 19:30:42 - перейти к сообщению
можно так
делаем таблицу пользователей
для каждого пользователя таблицу отношений с другими пользователями
назвать ее можно по логину
в ней будут перечислятся id пользователей к которым есть отношение
можно сделать флаг: друг, враг, игнор и тд

зы : "отношение" это математический термин ))
5. vanicon - 13 Сентября, 2011 - 05:47:06 - перейти к сообщению
Цитата:
можно так
делаем таблицу пользователей
для каждого пользователя таблицу отношений с другими пользователями
назвать ее можно по логину
в ней будут перечислятся id пользователей к которым есть отношение
можно сделать флаг: друг, враг, игнор и тд

зы : "отношение" это математический термин ))

Вы предлагаете сделать 2 таблицы, 1 таблицу для пользователей где будет храниться его логин, пасс и тд. И потом еще одну таблицу для каждого пользователя свою, где будет храниться id, login, и "флаг". Я Вас правильно понял или нет?
6. LIME - 13 Сентября, 2011 - 08:30:02 - перейти к сообщению
не совсем
вся инфа о пользователе логин пасс итд в общей базе
и для каждого пользователя своя таблица такого вида
-------------------------------- -
название - логин (или ID) |
-------------------------------- -
id | flag...
id | flag...
id | flag...
ну и чтото еще можно
где id это id другого пользователя а flag указывает отношение с этим пользователем
при добавлении в друзья к примеру довавляем новую запись с id друга и flag=1
где 1-друг, 2-игнор и еще хз кого там придумаете ))
(Добавление)
чтото много букав ))
короче зачем логин в индивидуальной базе? ненужен
7. vanicon - 13 Сентября, 2011 - 12:57:45 - перейти к сообщению
Цитата:
не совсем
вся инфа о пользователе логин пасс итд в общей базе
и для каждого пользователя своя таблица такого вида

Ну был и такой вариант, но мне смущает то что для каждого пользователя придется создавать отдельную таблицу в БД. Если по такому же принципу исходить то для каждого пользователя придется создавать минимум таблиц 6(друзья | не друзья, потом записи пользователя, его личные характеристики, и всякие там медиа дела), то допустим что будет около 10 тыс зареганных пользователей и будет 60 тыс таблиц под них... У меня просто не было такого огромного кол-во таблиц, и я не знаю как будет работать mysql. Но все же я думаю что такое большое число таблиц не есть хорошо...
8. EuGen - 13 Сентября, 2011 - 13:07:18 - перейти к сообщению
Однозначно в БД.
БД специально создана для хранения и поиска данных. Здесь Вам и индексы и специально оптимизированные storage-engine - и транзакционность, словом то, чего нет у файловой системы (и, стало быть, придется реализовывать самостоятельно)
9. LIME - 13 Сентября, 2011 - 13:56:04 - перейти к сообщению
vanicon пишет:
потом записи пользователя, его личные характеристики, и всякие там медиа дела
это можно в основную таблицу пользоватей засунуть
какие проблемы?
10. vanicon - 13 Сентября, 2011 - 14:12:44 - перейти к сообщению
Цитата:
это можно в основную таблицу пользоватей засунуть

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

 

Powered by ExBB FM 1.0 RC1