Приветствую всех! Ребят, подскажите, хочу сделать регистрацию пользователей. У меня будет 2 вида посетителей: обычные физ.лица и организации. Вопрос, как лучше составить структуру БД ? Таблицу на каждый вид или всех в одну, а потом группы ?
Есть очень популярная ( ) ошибка начинающих программистов: делают одну таблицу для простых юзеров, одну для админов, потом при каждом чихе еще по таблице на каждый тип пользователя. Это порождает чудовищные проблемы в сопровождении, стоимость поддержки растет экпоненциально. Нормальный способ: все пользователи — это пользователи (КЭП). Пользователь имеет атрибут "группа" или "роль", детали уже зависят от контекста. Если вдруг необходимо, заводим вторичную таблицу с тем же PK == user_id где храним доп. атрибуты для админа, но можно обойтись и одной. Если у вас возникают позывы в дополнительной таблице, первое, о чем надо подумать — а не являются ли эти доп. атрибуты атрибутами таблицы "группа". Другими словами права должны быть общими для всех админов, всех юзеров, модераторов и т.п. В русской википедии можно найти море полезной инфы по моделям управления правами.
нет, серьёзно. Если заведомо известно, что тут будут только физики и юрики, то можно все логины и прочую общую инфу хранить в одной таблице. А подробности, которые кроме как раз в сто лет используются - в двух других таблицах.
у тебя есть таблица "пользователи" где и те и другие? есть уникальный id? Добавлено спустя 4 минуты 42 секунды: я так и не понял из твоего предложения что где хранится
Тысяча чертей! Я написал пространный пост и он куда-то продевался, видимо Отправить забыл нажать!!! Короче, топикстартер, 1. таблицу Пользователи делай для всех без исключения пользователей, тип указывай как users.group_id 2. скорее всего кому-то из Юриков захочется иметь несколько пользователей на одно юрлицо. Поэтому таблица Клиент это отдельная сущность. Связываем как users.client_id=clients.id 3. атрибуты всех видов клиентов юриков и физиков можно держать в одной большой таблице ИЛИ в еще одном уровне таблиц — это уже вопрос религиозный, по логике приложения ничего не меняет, но влияет на производительность запросов.