Я создаю систему с группами. Их можно рассматривать как группы Facebook. Пользователи могут создавать новые группы. В настоящее время у меня имеются следующие группы:Database Design для системы, которая имеет Facebook как группы
- Группа города - Группы, основанные на определенном городе. Например, «London Buy and Sell Group»
- Школьная группа - группы, основанные на школах. Например, «Исследовательская группа Лондонского университета»
- Группа интересов - группы, которые не привязаны к месту. Например, «Вязальная группа более 50 лет»
В будущем будут добавлены новые типы групп. Каждая группа может иметь различные типы вариантов, но все группы имеют те же основные данные:
- Идентификатор
- Создатель ID
- Имя
- Опция Описание
I «Я пытаюсь собрать для этого дизайн базы данных. Моя первоначальная мысль заключалась в создании разных таблиц для разных групп.
Например, у одной таблицы есть group
. Эта таблица имеет id
, creator id
, name
, description
, member count
, timestamps
.
Затем введите другие таблицы, чтобы представить другие группы, и соедините их с group
. Поэтому у меня есть таблица city_group
, которая содержит и id
, group_id
, city_id
. И то же самое для других типов групп.
Единственная проблема с этим - interest_group
не имеет каких-либо дополнительных данных о нормальном group
. Но для того, чтобы иметь возможность запрашивать только группы интересов, я подумал, что имеет смысл создать таблицу interest_group
. Он будет иметь только следующие столбцы: id
, group_id
, timestamps
... который кажется немного расточительным, чтобы иметь таблицу только для этой цели.
Вот диаграмма, чтобы сделать вещи проще:
Есть ли какие-либо проблемы с моим решением, или какими-либо более эффективными способами решения этой проблемы проектирования?
У вас есть некоторые предопределенные типы групп?Что произойдет, если пользователь создаст новую группу? Будет ли это группой интересов? Или вы единственный, кто может добавлять группы позже? –
Группы, созданные пользователями, будут «группой городов» и «группой интересов». Только администраторы могут создавать «школьные группы». В будущем появятся другие группы, такие как «спортивная группа», представляющая спортивные команды и т. Д. – BugHunterUK
Интересный вопрос у вас здесь. Что относительно членов, которые находятся в этих группах? Будет ли таблица пользователей и таблица ссылок между пользователями и группами? –