|
|
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
Когда поймёте, что комнаты и диалоги это одна и та же сущность, и при варианте таблица dialogs id name user_id1 'Диалог1' 2 таблица users id name type1 'Комната' 'room'2 'Пользователь' 'user' таблица messages dialog_id user_id text12'мысль для комнаты'12'тема для диалога' Вы при выборе сообщений для комнат и диалогов просто не сможете определить какое сообщение где показывать, то и придёте к варианту, о котором Вам все тут говорят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 12:49 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
Mr.Fontaine, 1. Если тет-а-тет = собеседника, если больше участников, то уже придумаю как, это уже не важно (можно по 4 аватара выводить случайно, можно просто дефолтный аватар. 2. А может в дальнейшем расширю type и добавлю "типизированных пользователей", к примеру бота 3. Как обычно, в таком виде получается что пользователи между собой общаются, которые сами же добавились в беседу к этому пользователю(вернее к комнате). Первый пользователь написал - создалась беседа и все, когда последний вышел, то не удаляем эту беседу(запись из dialogs), т.к. т.е. у каждого users type = room будет по одной записи dialogs - раз и навсегда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 12:51 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
Я Вашу мысль понял. Если она Вам кажется более правильной, чем версия Кота Матроскина, то вопросов нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 13:05 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
IceJOKERосторожно интересуюсь: CASE WHEN , IF THEN ELSE и т.п. конструкции в каком либо варианте, в каком либо языке программирования вам знакомы? Эти конструкции знакомы, но увы в моем случае нет возможности ими воспользоваться Система без единого условного оператора в коде - это будет интересно, да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 13:05 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
IceJOKERMr.Fontaine, 2. А может в дальнейшем расширю type и добавлю "типизированных пользователей", к примеру бота ну в Вашей схеме то, что Вы называете комнатами, и являются своеобразными ботами. Молчаливыми, которые круглосуточно сидят только в своей беседе, никуда больше не ходят и ничего не пишут. Так что можно реализовать тип "блуждающий бот", которого научить писать и тогда глядишь и других пользователей и не надо будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 13:17 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
Mr.FontaineЯ Вашу мысль понял. Если она Вам кажется более правильной, чем версия Кота Матроскина, то вопросов нет в том то и дело, что не могу выбрать, что правильнее, а хотелось бы заложить хороший фундамент, чем потом переделывать все. может в дальнейшем захочу сделать возможность пользователям добавлять публичные беседы, тогда они смешаются с комнатами или придется сделать такую структуру: dialogs id, user_id, icon, name, is_room(0,1), type(public/friends/private) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 13:19 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, бэкэнд - это сервис предоставляющий базу и api для работы с ним и пока, если я не ошибаюсь, там нет условных операторов(if...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 13:22 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
Mr.FontaineIceJOKERMr.Fontaine, 2. А может в дальнейшем расширю type и добавлю "типизированных пользователей", к примеру бота ну в Вашей схеме то, что Вы называете комнатами, и являются своеобразными ботами. Молчаливыми, которые круглосуточно сидят только в своей беседе, никуда больше не ходят и ничего не пишут. Так что можно реализовать тип "блуждающий бот", которого научить писать и тогда глядишь и других пользователей и не надо будет. но у ботов будет другая роль, тогда как их отличить от комнат и пользователей? сделать dialogs: id, ...., type(room, bot), access(public/friends/private) ??? если сделать как мой вариант users id, ...., type(room, bot) тогда можно будет, к примеру, для бота установить описание(описание пользователя), ставить ему вечный online, устраивать викторины через бота. p.s. я не пишу, что мой вариант лучше, а другие хуже, я просто для себя хочу понять какой лучше и наконец остановиться на том или ином варианте ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 13:28 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
IceJOKERКот Матроскин, бэкэнд - это сервис предоставляющий базу и api для работы с ним и пока, если я не ошибаюсь, там нет условных операторов(if...) Это зависит от того, что Вы подразумеваете под API. Если это какие-то методы типа "СоздатьПользователя", "СоздатьДиалог" и т.п. - они будут написаны на некоем языке программирования, который скорее всего позволяет использовать условные операторы. Если под API Вы понимаете только возможность делать Insert'ы и delet'ы в подготовленную структуру - то условные операторы Вам и не нужны, достаточно обьявить поле Icon в таблице dialog nullable, и у внешнего кода будет возможность записывать и отображать в dialog иконку, когда она нужна, и не записывать/не отображать тогда, когда она не нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 13:32 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 13:35 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
IceJOKER, чё-то Вы меня сосем запутали.... Конечно понятно, что у обсуждаемых ботов будет роль, отличная от молчаливых комнатных ботов. Молчаливые боты, по Вашей же идее, создаются, чтобы постоянно сидеть в своей беседе, и так как там кто-то сидит, и беседа удаляться не будет никогда, превращаясь постепенно в комнату, обросшую пылью. У обсуждаемых же ботов будет роль как можно более походить на пользователей: бегать по имеющимся комнатам, создавать свои беседы, добиваться приглашения в какую-то чужую беседу и писать, писать, писать.... Это два совершенно разных типа ботов. Только вот зачем их пихать в таблицу dialogs ???? Создаётся запись в таблице users с типом 'bot' а дальше просто автоматизировать действия пользователя, но никаких дополнительных требований к структуре БД для бота не требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 13:42 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
Mr.Fontaine, я имел в виду ботов как в Telegram, которые когда то были в icq. Они не будут бегать и делать что-то, а будут как комнаты пылиться, пока пользователь не напишет ему, там уже начнется беседа с пользователем, где пользователь может играть в викторину и т.д. т.е. по функционалу бот будет точно таким же как комната, но с отличием, что он будет общаться с участниками беседы(отвечать на определенные команды). я так и писал, что можно добавить столбец type к users и присвоить значение bot(или room, дефолт - NULL , если это обычный пользователь) Получается такая иерархия: Пользователи<-Комнаты<-Боты В остальном все будет как обычно, пользователи могут писать пользователям, могут писать в комнаты и ботам, т.е. dialogs так и останется: id, user_id, icon, name, type(public...) /* где user_id - это создатель диалога(беседы) */ p.s. Ботов я для примера привел, имелось в виду, чтоб в дальнейшем была возможность расширить при необходимости, нужно как можно дальше в будущее посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 13:59 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
IceJOKER, ну и собери теперь все свои мысли вместе и нарисуй схему БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 14:11 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
Mr.FontaineIceJOKER, ну и собери теперь все свои мысли вместе и нарисуй схему БД То есть вы согласны с моим вариантом? Или вы хотите посмотреть на конечный результат? Или вам просто стало пофиг и решили забить? :D так или иначе спасибо за участие, но пока не хочу спешить и еще подожду, может все таки увижу вариант, который сразу устроит(aka любовь с первого взгляда) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2015, 14:21 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
IceJOKER, так и хотелось бы посмотреть о чём мы разговариваем на данный момент. Например, существует ли на данный момент в схеме БД таблица rooms, сделали ли Вы в таблице dialogs поле type и access, какие поля в таблице users и messages, где хранятся списки участников диалогов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2015, 08:04 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
Человек может присоединиться в процессе разговора или выйти из разговора? Если да, то нужно ли ему показывать то, что было до его подключения? В случае постоянно работающей комнаты лог может быть огромен. А после его выхода из разговора/комнаты ему надо показывать его же историю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2015, 08:13 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
contacrer, решил обойтись без таблицы rooms, пока (в тестовом режиме) сделал rooms as users; пока окончательно не решил, надеюсь на чудо :D кто знает, может схема таблицы упадет на голову.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2015, 13:16 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
boottyЧеловек может присоединиться в процессе разговора или выйти из разговора? Если да, то нужно ли ему показывать то, что было до его подключения? В случае постоянно работающей комнаты лог может быть огромен. А после его выхода из разговора/комнаты ему надо показывать его же историю? Может присоединиться, выходить когда угодно, нужно показывать, сообщения беседы хранятся до тех пор, пока последний не покинет беседу, тогда беседа удалится. p.s. если вы для себя хотите что-то узнать, то подчеркните это, а то непонятно - хотите вы помочь, или для себя что-то узнаете. если хотите помочь - то вопросы выше не важны, мне лишь нужно наиболее грамотно отделить беседу пользователей от беседы в комнате с учетом условий, что я описал в предыдущих сообщениях ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2015, 13:19 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
IceJOKERМожет присоединиться, выходить когда угодно, нужно показывать, сообщения беседы хранятся до тех пор, пока последний не покинет беседу, тогда беседа удалится. Тогда вообще нет смысла использовать базу данных, особенно реляционную базу данных. РСУБД проектируются для работы с ценными данными, которые должны храниться и ни в коем случае не теряться; применять их для работы с сугубо временным малоценным мусором - стрелять из пушки по воробьям. Простенький чат-сервер с хранением в памяти будет работать в десять раз быстрее, потребляя при этом в десять раз меньше ресурсов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2015, 14:19 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
IceJOKERмне лишь нужно наиболее грамотно отделить беседу пользователей от беседы в комнате с учетом условий, что я описал в предыдущих сообщениях Советовать сложно: из описания не могу понять, в чем принципиальная разница между комнатой и беседой. В том, чтобы показать пользователю только комнаты и беседы, которые он создал или в которые его пригласили? Или в том, что у беседы есть конкретный автор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2015, 14:25 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
softwarerIceJOKERМожет присоединиться, выходить когда угодно, нужно показывать, сообщения беседы хранятся до тех пор, пока последний не покинет беседу, тогда беседа удалится. Тогда вообще нет смысла использовать базу данных, особенно реляционную базу данных. РСУБД проектируются для работы с ценными данными, которые должны храниться и ни в коем случае не теряться; применять их для работы с сугубо временным малоценным мусором - стрелять из пушки по воробьям. Простенький чат-сервер с хранением в памяти будет работать в десять раз быстрее, потребляя при этом в десять раз меньше ресурсов. База данных может быть не только хранилищем, но и интерфейсом к данным для всяких сторонних анализаторов контекста и т.п., буде появится в них нужда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2015, 15:03 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинБаза данных может быть не только хранилищем, но и интерфейсом к данным для всяких сторонних анализаторов контекста и т.п., буде появится в них нужда. Когда появится нужда, тогда можно будет подумать об оптимальном способе её удовлетворить. Конкретно криво проектировать сегодня ради призрачной потребности "когда-нибудь" - как это называется? С тем же успехом можно потребовать написать sql.ru на Лиспе - ведь рано или поздно потребуется подключать к нему искусственный интеллект. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2015, 15:07 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
softwarerIceJOKERМожет присоединиться, выходить когда угодно, нужно показывать, сообщения беседы хранятся до тех пор, пока последний не покинет беседу, тогда беседа удалится. Тогда вообще нет смысла использовать базу данных, особенно реляционную базу данных. РСУБД проектируются для работы с ценными данными, которые должны храниться и ни в коем случае не теряться; применять их для работы с сугубо временным малоценным мусором - стрелять из пушки по воробьям. Простенький чат-сервер с хранением в памяти будет работать в десять раз быстрее, потребляя при этом в десять раз меньше ресурсов. Простенький чат-сервер - что вы под этим подразумеваете ? Хранить данные в течении сессии? Если да, то не подходит, т.к. данные могут храниться как 1 день, так и месяц(ровно столько, сколько пользователь посчитает нужным оставлять беседу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2015, 15:14 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
boottyIceJOKERмне лишь нужно наиболее грамотно отделить беседу пользователей от беседы в комнате с учетом условий, что я описал в предыдущих сообщениях Советовать сложно: из описания не могу понять, в чем принципиальная разница между комнатой и беседой. В том, чтобы показать пользователю только комнаты и беседы, которые он создал или в которые его пригласили? Или в том, что у беседы есть конкретный автор? я же выше дважды по пальцам объяснил разницу: беседы доступны лишь создателю и тем кого он пригласил, эти беседы никому не видны кроме как участникам беседы и беседы удаляются как только последний человек выйдет оттуда комнаты доступны всем, в него могут заходить любые пользователи, общаться, выходить, потом снова заходить и комнаты все время будут им доступны, комнаты не удаляются когда последний человек выходит оттуда, пылятся и ждут участников - кто-то зашел - радуется, не зашел - ждет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2015, 15:17 |
|
||
|
Проектирование БД для чата с комнатами
|
|||
|---|---|---|---|
|
#18+
softwarerКот МатроскинБаза данных может быть не только хранилищем, но и интерфейсом к данным для всяких сторонних анализаторов контекста и т.п., буде появится в них нужда. Когда появится нужда, тогда можно будет подумать об оптимальном способе её удовлетворить. Конкретно криво проектировать сегодня ради призрачной потребности "когда-нибудь" - как это называется? Почему криво? Ну да, будет медленнее - а что, есть уверенность что именно быстродействие серверной части является критичным требованием к системе? И насчет "призрачной потребности" - ни Вы ни я не знаем какие требования к системе существуют прямо сейчас. Я отметил, что возможны такие задачи, для которых наличие реляционной БД будет плюсом даже при отсутствии требования хранить данные какие-то исторически долгие сроки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2015, 15:20 |
|
||
|
|

start [/forum/moderation_log.php?user_name=-Jp-]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 668ms |
| total: | 851ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...