prometex

Рейтинг
14
Регистрация
16.06.2008

Turtle_Fly, не могли бы Вы подробно описать эту схему (таблицы, поля, связи)?

Alipapa:
Юзер может принадлежать одновременно нескольким группам

Кстати, спасибо за подсказку, сделаю ещё одну таблицу для хранения групп пользователей :)

prometex добавил 12.12.2008 в 14:13

Я ошибался, в моём случае имеет место наследование, а не связь 1:1

Странно..

users:id (primary, autoincrement)

students:user_id (primary) -> users:id

teachers:user_id (primary) -> users:id

Пример записи

users:id [1,2,3,4,5,6,7,8]

students:user_id [1,2,3]

teachers:user_id [4,5,6]

sometable:user_id [7,8,...]

Если взять 20 групп по 15 параметров в каждой, то получим таблицу, у которой будет 300 полей!

Причём каждая запись будет заполнять только 15, а остальные 285 будут NULL - это лучше чем связь 1:1?

Именно 1:1

user_groups (id, name, rights)

users (id, group_id, name, login, password)

students (user_id, age, progress, grant)

teachers (user_id, hours, class, salary)

Выходит это единственное оптимальное решение..

Alipapa, предлагаете сделать так:

user_groups (id, name, rights)

user_students (id, group_id, name, login, password, grants, ...)

user_teachers (id, group_id, name, login, password, salary, ...)

И при авторизации проверять каждую таблицу на соответствие login/password, и в процессе добавления пользователей следить чтобы login не совпадал с логинами из других таблиц?

prometex добавил 11.12.2008 в 12:06

Или так:

user_groups (id, name, rigths)

users (id, group_id, name, login, password, grants=NULL,salary=NULL, ...=NULL, 63-е ... =NULL)?

Чтобы получилась таблица с несколькими сотнями полей?

Turtle_Fly, не совсем понятно. Допустим у пользователей "преподаватели" зарплата, а у пользователей "студенты" - стипендия. Куда вы занесёте сумму, и как потом узнаете где зарплата и где стипендия?

prometex добавил 11.12.2008 в 11:42

В любом случае Вы не сможете задать тип данных для каждого параметра. У Вас поля и возраст и должность и дата и время будут иметь одинаковый тип varchar или ещё хуже text

ApocX, в БД.

Идентификатор в сессии это само сабой.

Из достоинств первого способа можно отметить очень быструю проверку доступа к странице и возможность создания страниц без запросов к БД.

Из недостатков я бы отметил то, что например, если админ решит срочно запретить доступ к странице, то пользователь всё равно будет иметь доступ до тех пор, пока не закончится его сессия.

Какие ещё могут быть достоинства и недостатки?

Bor-ka:
Brand from Amber,
у Вас получается связь М:М, которая разрешается через дополнительную таблицу.
Поэтому у Вас будет список статей, список свойств и таблица связи, содержащая первичный ключ, ID св-ва, ID статьи.

Неа... 🚬

Получается четыре таблицы:

1) Группы товаров (это может быть каталог)

2) Товары

3) Параметры товаров

4) Данные параметров

Отношения:

Товары - Группы товаров (М:1)

Параметры товаров - Группы товаров (М:1)

Данные параметров - Товары (М:1)

Данные параметров - Параметры товаров (М:1)

🍾

блин, точно! :)

как я сам не догадался...!?

спасибо дорогой!

123
Всего: 23