[БД] Одна или несколько таблиц для списка пользователей?
---
Q46: да ну?
A46: ну да.
1) id - пользователь - формальное описание пользователя
2) id - группа - формальное описание группы
3) id - user_id - group_id
кол-во записей в таблице 3 с одинаковыми user_id равно кол-ву групп, в которых состоит данный пользователь.
, спасибо за ценный совет.
- отдельная таблица на каждый тип
- общие данные (логин, пароль) в одной таблице, под специфические данные для каждого класса своя таблица
- 2 таблицы. в одной общие данные, в другой записи вида <свойство> - <значение> со сылкой на первую
- одна большая таблица
можно ещё придумать...
а вот что лучше для данной задачи - это вопрос к тебе
сколько планируется пользователей, сколько различных групп, нужно ли добавлять группы "на лету" или изменять набор свойств
4 группы пользователей.
В случае с одной таблицей проще делать выборки, но сложно "разделить" группы с помощью constraint-ов БД. В случае нескольких таблиц каждая может жить своей собственной жизнью, например можно отдельно для специфической группы пользователей (таблицы) сделать какие-то реляционные связи.
вариантов несколькоВ большинстве проектов надо использовать 2-ой вариант. Его главное достоинство -- прозрачность схемы, т.е. меньше условностей (рисовали типа ERWin, Visio разруливают "наследование" именно по этому варианту). Недостаток: возможно небольшая потеря в производительности при некоторых видах запросов (это надо смотреть более детально). Больше недостатков я не вижу, см. ниже.
- отдельная таблица на каждый тип
- общие данные (логин, пароль) в одной таблице, под специфические данные для каждого класса своя таблица
- 2 таблицы. в одной общие данные, в другой записи вида <свойство> - <значение> со сылкой на первую
- одна большая таблица
- 2 таблицы. в одной общие данные, в другой записи вида <свойство> - <значение> со сылкой на первуюпочему вы боитесь делать create/alter table "на лету"?
Обычные горизонтальные таблички удобнее для sql-запросов.
сколько различных групп,какая разница?
лишний union для запросов по всем пользователям
- отдельная таблица на каждый тип
- одна большая таблицасхема становиться не прозрачной -- некоторый поля не имеют смысла для некоторых записей
В случае с одной таблицей проще делать выборкисделать одну вьюшку это так сложно?
делать одну вьюшку это так сложно?Тут вьюшка не поможет, ибо что у тебя будет PK? и нагрузка на базу больше.
Тут вьюшка не поможет, ибо что у тебя будет PK?PK из таблицы с общими данными
и нагрузка на базу больше.я об этом написал.
Есть запросы, которые в случае одной таблицы будут выполняться медленнее.
Оставить комментарий
Corrector
Имеется некоторый сайт. Есть список пользователей, которые могут залогинится.Специфика сайта такова, что разные группы пользователей имеют разный набор параметров (полей в таблицах)
Как лучше сделать: по одной таблице для каждой круппы пользователей или сделать одну большую таблицу с избыточном количеством полей (при этом >50% таблицы будет незаполнена)?