powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД для чата с комнатами
25 сообщений из 61, страница 2 из 3
Проектирование БД для чата с комнатами
    #39022497
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда поймёте, что комнаты и диалоги это одна и та же сущность, и при варианте
таблица dialogs
id name user_id1 'Диалог1' 2
таблица users
id name type1 'Комната' 'room'2 'Пользователь' 'user'
таблица messages
dialog_id user_id text12'мысль для комнаты'12'тема для диалога'
Вы при выборе сообщений для комнат и диалогов просто не сможете определить какое сообщение где показывать, то и придёте к варианту, о котором Вам все тут говорят
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39022502
IceJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr.Fontaine,

1. Если тет-а-тет = собеседника, если больше участников, то уже придумаю как, это уже не важно (можно по 4 аватара выводить случайно, можно просто дефолтный аватар.

2. А может в дальнейшем расширю type и добавлю "типизированных пользователей", к примеру бота

3. Как обычно, в таком виде получается что пользователи между собой общаются, которые сами же добавились в беседу к этому пользователю(вернее к комнате). Первый пользователь написал - создалась беседа и все, когда последний вышел, то не удаляем эту беседу(запись из dialogs), т.к. т.е. у каждого users type = room будет по одной записи dialogs - раз и навсегда
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39022528
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я Вашу мысль понял. Если она Вам кажется более правильной, чем версия Кота Матроскина, то вопросов нет
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39022529
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceJOKERосторожно интересуюсь:
CASE WHEN , IF THEN ELSE и т.п. конструкции в каком либо варианте, в каком либо языке программирования вам знакомы?
Эти конструкции знакомы, но увы в моем случае нет возможности ими воспользоваться

Система без единого условного оператора в коде - это будет интересно, да
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39022538
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceJOKERMr.Fontaine,
2. А может в дальнейшем расширю type и добавлю "типизированных пользователей", к примеру бота

ну в Вашей схеме то, что Вы называете комнатами, и являются своеобразными ботами. Молчаливыми, которые круглосуточно сидят только в своей беседе, никуда больше не ходят и ничего не пишут.
Так что можно реализовать тип "блуждающий бот", которого научить писать и тогда глядишь и других пользователей и не надо будет.
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39022544
IceJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr.FontaineЯ Вашу мысль понял. Если она Вам кажется более правильной, чем версия Кота Матроскина, то вопросов нет

в том то и дело, что не могу выбрать, что правильнее, а хотелось бы заложить хороший фундамент, чем потом переделывать все.
может в дальнейшем захочу сделать возможность пользователям добавлять публичные беседы, тогда они смешаются с комнатами или придется сделать такую структуру:
dialogs
id, user_id, icon, name, is_room(0,1), type(public/friends/private)
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39022545
IceJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

бэкэнд - это сервис предоставляющий базу и api для работы с ним и пока, если я не ошибаюсь, там нет условных операторов(if...)
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39022550
IceJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr.FontaineIceJOKERMr.Fontaine,
2. А может в дальнейшем расширю type и добавлю "типизированных пользователей", к примеру бота

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

но у ботов будет другая роль, тогда как их отличить от комнат и пользователей? сделать dialogs:
id, ...., type(room, bot), access(public/friends/private)
???

если сделать как мой вариант
users
id, ...., type(room, bot)

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

p.s. я не пишу, что мой вариант лучше, а другие хуже, я просто для себя хочу понять какой лучше и наконец остановиться на том или ином варианте
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39022557
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceJOKERКот Матроскин,

бэкэнд - это сервис предоставляющий базу и api для работы с ним и пока, если я не ошибаюсь, там нет условных операторов(if...)
Это зависит от того, что Вы подразумеваете под API. Если это какие-то методы типа "СоздатьПользователя", "СоздатьДиалог" и т.п. - они будут написаны на некоем языке программирования, который скорее всего позволяет использовать условные операторы.
Если под API Вы понимаете только возможность делать Insert'ы и delet'ы в подготовленную структуру - то условные операторы Вам и не нужны, достаточно обьявить поле Icon в таблице dialog nullable, и у внешнего кода будет возможность записывать и отображать в dialog иконку, когда она нужна, и не записывать/не отображать тогда, когда она не нужна.
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39022563
IceJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кот Матроскин,

http://parse.com
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39022569
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceJOKER, чё-то Вы меня сосем запутали....
Конечно понятно, что у обсуждаемых ботов будет роль, отличная от молчаливых комнатных ботов.
Молчаливые боты, по Вашей же идее, создаются, чтобы постоянно сидеть в своей беседе, и так как там кто-то сидит, и беседа удаляться не будет никогда, превращаясь постепенно в комнату, обросшую пылью.
У обсуждаемых же ботов будет роль как можно более походить на пользователей: бегать по имеющимся комнатам, создавать свои беседы, добиваться приглашения в какую-то чужую беседу и писать, писать, писать....
Это два совершенно разных типа ботов. Только вот зачем их пихать в таблицу dialogs ????
Создаётся запись в таблице users с типом 'bot' а дальше просто автоматизировать действия пользователя, но никаких дополнительных требований к структуре БД для бота не требуется.
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39022583
IceJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr.Fontaine,

я имел в виду ботов как в Telegram, которые когда то были в icq.
Они не будут бегать и делать что-то, а будут как комнаты пылиться, пока пользователь не напишет ему, там уже начнется беседа с пользователем, где пользователь может играть в викторину и т.д.
т.е. по функционалу бот будет точно таким же как комната, но с отличием, что он будет общаться с участниками беседы(отвечать на определенные команды).

я так и писал, что можно добавить столбец type к users и присвоить значение bot(или room, дефолт - NULL , если это обычный пользователь)

Получается такая иерархия:
Пользователи<-Комнаты<-Боты

В остальном все будет как обычно, пользователи могут писать пользователям, могут писать в комнаты и ботам, т.е. dialogs так и останется:
id, user_id, icon, name, type(public...) /* где user_id - это создатель диалога(беседы) */


p.s. Ботов я для примера привел, имелось в виду, чтоб в дальнейшем была возможность расширить при необходимости, нужно как можно дальше в будущее посмотреть.
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39022588
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceJOKER, ну и собери теперь все свои мысли вместе и нарисуй схему БД
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39022597
IceJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mr.FontaineIceJOKER, ну и собери теперь все свои мысли вместе и нарисуй схему БД
То есть вы согласны с моим вариантом? Или вы хотите посмотреть на конечный результат? Или вам просто стало пофиг и решили забить? :D

так или иначе спасибо за участие, но пока не хочу спешить и еще подожду, может все таки увижу вариант, который сразу устроит(aka любовь с первого взгляда)
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39023048
contacrer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
IceJOKER, так и хотелось бы посмотреть о чём мы разговариваем на данный момент.
Например, существует ли на данный момент в схеме БД таблица rooms, сделали ли Вы в таблице dialogs поле type и access, какие поля в таблице users и messages, где хранятся списки участников диалогов
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39023053
Фотография bootty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Человек может присоединиться в процессе разговора или выйти из разговора? Если да, то нужно ли ему показывать то, что было до его подключения? В случае постоянно работающей комнаты лог может быть огромен. А после его выхода из разговора/комнаты ему надо показывать его же историю?
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39023464
IceJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
contacrer,

решил обойтись без таблицы rooms, пока (в тестовом режиме) сделал rooms as users;
пока окончательно не решил, надеюсь на чудо :D кто знает, может схема таблицы упадет на голову..
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39023472
IceJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
boottyЧеловек может присоединиться в процессе разговора или выйти из разговора? Если да, то нужно ли ему показывать то, что было до его подключения? В случае постоянно работающей комнаты лог может быть огромен. А после его выхода из разговора/комнаты ему надо показывать его же историю?

Может присоединиться, выходить когда угодно, нужно показывать, сообщения беседы хранятся до тех пор, пока последний не покинет беседу, тогда беседа удалится.


p.s. если вы для себя хотите что-то узнать, то подчеркните это, а то непонятно - хотите вы помочь, или для себя что-то узнаете.
если хотите помочь - то вопросы выше не важны, мне лишь нужно наиболее грамотно отделить беседу пользователей от беседы в комнате с учетом условий, что я описал в предыдущих сообщениях
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39023529
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceJOKERМожет присоединиться, выходить когда угодно, нужно показывать, сообщения беседы хранятся до тех пор, пока последний не покинет беседу, тогда беседа удалится.
Тогда вообще нет смысла использовать базу данных, особенно реляционную базу данных. РСУБД проектируются для работы с ценными данными, которые должны храниться и ни в коем случае не теряться; применять их для работы с сугубо временным малоценным мусором - стрелять из пушки по воробьям. Простенький чат-сервер с хранением в памяти будет работать в десять раз быстрее, потребляя при этом в десять раз меньше ресурсов.
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39023538
Фотография bootty
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IceJOKERмне лишь нужно наиболее грамотно отделить беседу пользователей от беседы в комнате с учетом условий, что я описал в предыдущих сообщениях
Советовать сложно: из описания не могу понять, в чем принципиальная разница между комнатой и беседой. В том, чтобы показать пользователю только комнаты и беседы, которые он создал или в которые его пригласили? Или в том, что у беседы есть конкретный автор?
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39023581
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerIceJOKERМожет присоединиться, выходить когда угодно, нужно показывать, сообщения беседы хранятся до тех пор, пока последний не покинет беседу, тогда беседа удалится.
Тогда вообще нет смысла использовать базу данных, особенно реляционную базу данных. РСУБД проектируются для работы с ценными данными, которые должны храниться и ни в коем случае не теряться; применять их для работы с сугубо временным малоценным мусором - стрелять из пушки по воробьям. Простенький чат-сервер с хранением в памяти будет работать в десять раз быстрее, потребляя при этом в десять раз меньше ресурсов.

База данных может быть не только хранилищем, но и интерфейсом к данным для всяких сторонних анализаторов контекста и т.п., буде появится в них нужда.
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39023583
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот МатроскинБаза данных может быть не только хранилищем, но и интерфейсом к данным для всяких сторонних анализаторов контекста и т.п., буде появится в них нужда.
Когда появится нужда, тогда можно будет подумать об оптимальном способе её удовлетворить. Конкретно криво проектировать сегодня ради призрачной потребности "когда-нибудь" - как это называется? С тем же успехом можно потребовать написать sql.ru на Лиспе - ведь рано или поздно потребуется подключать к нему искусственный интеллект.
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39023597
IceJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerIceJOKERМожет присоединиться, выходить когда угодно, нужно показывать, сообщения беседы хранятся до тех пор, пока последний не покинет беседу, тогда беседа удалится.
Тогда вообще нет смысла использовать базу данных, особенно реляционную базу данных. РСУБД проектируются для работы с ценными данными, которые должны храниться и ни в коем случае не теряться; применять их для работы с сугубо временным малоценным мусором - стрелять из пушки по воробьям. Простенький чат-сервер с хранением в памяти будет работать в десять раз быстрее, потребляя при этом в десять раз меньше ресурсов.

Простенький чат-сервер - что вы под этим подразумеваете ? Хранить данные в течении сессии? Если да, то не подходит, т.к. данные могут храниться как 1 день, так и месяц(ровно столько, сколько пользователь посчитает нужным оставлять беседу)
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39023601
IceJOKER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
boottyIceJOKERмне лишь нужно наиболее грамотно отделить беседу пользователей от беседы в комнате с учетом условий, что я описал в предыдущих сообщениях
Советовать сложно: из описания не могу понять, в чем принципиальная разница между комнатой и беседой. В том, чтобы показать пользователю только комнаты и беседы, которые он создал или в которые его пригласили? Или в том, что у беседы есть конкретный автор?

я же выше дважды по пальцам объяснил разницу:
беседы доступны лишь создателю и тем кого он пригласил, эти беседы никому не видны кроме как участникам беседы и беседы удаляются как только последний человек выйдет оттуда
комнаты доступны всем, в него могут заходить любые пользователи, общаться, выходить, потом снова заходить и комнаты все время будут им доступны, комнаты не удаляются когда последний человек выходит оттуда, пылятся и ждут участников - кто-то зашел - радуется, не зашел - ждет.
...
Рейтинг: 0 / 0
Проектирование БД для чата с комнатами
    #39023604
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerКот МатроскинБаза данных может быть не только хранилищем, но и интерфейсом к данным для всяких сторонних анализаторов контекста и т.п., буде появится в них нужда.
Когда появится нужда, тогда можно будет подумать об оптимальном способе её удовлетворить. Конкретно криво проектировать сегодня ради призрачной потребности "когда-нибудь" - как это называется?

Почему криво? Ну да, будет медленнее - а что, есть уверенность что именно быстродействие серверной части является критичным требованием к системе? И насчет "призрачной потребности" - ни Вы ни я не знаем какие требования к системе существуют прямо сейчас. Я отметил, что возможны такие задачи, для которых наличие реляционной БД будет плюсом даже при отсутствии требования хранить данные какие-то исторически долгие сроки.
...
Рейтинг: 0 / 0
25 сообщений из 61, страница 2 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД для чата с комнатами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]