powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Таблица-связка таблиц пользователей и групп
11 сообщений из 11, страница 1 из 1
Таблица-связка таблиц пользователей и групп
    #32669796
anpv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Есть 2 таблицы:
1. Пользователи
create table "tUser"
(
"id" integer not null,
...
constraint "tUser_PK" primary key ("id")
)

2. Группы
create table "tGroup"
(
id integer not null,
...
constraint "tGroup_PK" primary key ("id")
)

Пользователи могут входить в разные группы, поэтому нужна еще таблица для их связки и однозначной идентификации.
3. Вхождение пользователей в группы
create table "tUserInGroup"
(
"id" integer not null,
"user_id" integer not null,
"group_id" integer not null,
constraint "tUser_FK" foreign key ("user_id") references "tUser" ("id"),
constraint "tGroup_FK" foreign key ("group_id") references "tGroup" ("id")
)

Другие таблицы будут ссылатся на "tUserInGroup" ("id") и этот ключ будет определять пользователя из конкретной группы.
Подскажите какой сделать первичный ключ в таблице "tUserInGroup" .
...
Рейтинг: 0 / 0
Таблица-связка таблиц пользователей и групп
    #32669801
anpv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл написать поля "id" во всех таблицах автоинкрементные (генератор+триггер).
...
Рейтинг: 0 / 0
Таблица-связка таблиц пользователей и групп
    #32669804
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторДругие таблицы будут ссылатся на "tUserInGroup" ("id") и этот ключ будет определять пользователя из конкретной группы.
Это еще как?
пользователя определяет user_id.

Я бы убрал поле id, а по полям user_id и group_id сделал бы PK, этим и получил бы уникальность комбинаций.
...
Рейтинг: 0 / 0
Таблица-связка таблиц пользователей и групп
    #32669805
anpv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Dik76
Пользователь может многократно входить в разные группы, и поле "tUserInGroup"."id" нужно для идетификации пользователя в конкретной группе.
...
Рейтинг: 0 / 0
Таблица-связка таблиц пользователей и групп
    #32669807
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Придумываешь... user_id, group_id этого достаточно для определения входит пользователь в группу или нет. Обычная связь M:N.
Если уж очень хочется, то оставь свой id, сделай по нему PK. А по user_id, group_id сделай уникальный индекс. ИМХО ни к чему это..
...
Рейтинг: 0 / 0
Таблица-связка таблиц пользователей и групп
    #32669810
anpv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Один пользователь создается один раз (при создании пользователя о нем вводится много информации, а создается один раз чтобы не дублировать информацию о нем).
2. Создается каждый раз новая группа в которую могут входить несколько пользователей (могут быть новые, а могут и раньше быть введены).
3. При добавлении нового пользователя проверяется не был ли он раньше введен. Если был, то в таблицу связку "tUserInGroup" записывается его "id" , а если нет то создается новый пользователь, и в таблицу связку "tUserInGroup" записывается его "id" .
В каждой новой группе у пользователя новые свойства (определяются внешними таблицами по внешним ключам на поле "tUserInGroup"."id" ).
Варианты первичного ключа (ПК) для таблицы "tUserInGroup" :
1. Отдельно ПК для ("id") и ("user_id","group_id") . Но разве так можно?
2. ПК для ("id") , а для ("user_id","group_id") - UNIQUE .
3. ПК для ("user_id","group_id") а для ("id") - UNIQUE .
Какой из вариантов правильный?
...
Рейтинг: 0 / 0
Таблица-связка таблиц пользователей и групп
    #32669815
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какой из вариантов правильный?
Первый невозможен.
Второй правильный.
...
Рейтинг: 0 / 0
Таблица-связка таблиц пользователей и групп
    #32669817
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В каждой новой группе у пользователя новые свойства (определяются внешними таблицами по внешним ключам на поле "tUserInGroup"."id").
Подробнее про это можно?
...
Рейтинг: 0 / 0
Таблица-связка таблиц пользователей и групп
    #32669822
anpv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Dik76
Подробнее:
Наверное я не правильно выразился на счет новых свойств пользователя.
Скорее это не свойства а действия.
Т.е. группы пользователей создаются для продаж. Новая группа - новая продажа. Пользователь - это покупатель. В каждой продаже каждый пользователь покупает новые товары, на покупки новые скидки и т.д. Группа объединяет пользователей некоторыми признаками, например количество человек (взрослых или детей) в группе. Количество человек в группе может быть больше количества пользователей (например не у всех пользователей в группе могут быть паспортные данные и один пользователь оформляется за всех).
...
Рейтинг: 0 / 0
Таблица-связка таблиц пользователей и групп
    #32669824
anpv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я ошибся, не продажи а покупки.
...
Рейтинг: 0 / 0
Таблица-связка таблиц пользователей и групп
    #32669835
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Теперь понятно.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Таблица-связка таблиц пользователей и групп
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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