![]() |
|
Модераторы: LSD |
![]()
|
|
| DsKTY |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 8.8.2007 Репутация: нет Всего: нет |
Доброго времени суток.
Допустим есть 2 таблицы users (с полями name и group) и groups (с полями id и info). Если пользователь входит в какую-то группу, то в users.group будет указан номер этой группы. Вопрос такой: как сделать так что бы пользователь мог принадлежать нескольким группам, т.е. указать в users.group несколько значений ссылающихся на разные строки в groups?? |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
ввести дополнительную таблицу users_and_groups где будет два поля: idgroup и iduser. оба поля будут входить в состав первичного ключа(составной ключ получается), в принципе, поле-идентификатор(автоинкрементное поле) при таком раскладе не обязательно.
таким образом, входждение определенного пользователя в определенную группу будет фиксироваться при помощи отдельной записи из двух полей. уникальность сочетания пользователь + группа(чтоб пользователь не мог войти в одну и ту же группу дважды) гарантируется механизмом первичного ключа. удалить пользователя из группы можно удалением одной конкретной записи из этой таблицы. посчитать количество пользователей в группе и групп, к которым принадлежит пользователь, тоже не составит труда: с использованием count(*). само вынесение связей в отдельную таблицу является частью процесса, называемого нормализацией и призванного упростить работу с проектируемой базой данных. |
|||
|
||||
| DsKTY |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 8.8.2007 Репутация: нет Всего: нет |
хм.. .действительно. как-то не подумал про отдельную таблицу. спасибо
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
Чтобы пометить вопрос решенным найди над своим первым постом темы в правом верхнем углу поста ссылку "Пометить вопрос решенным!" Добавлено через 1 минуту и 37 секунд кстати говоря, ситуации, когда делать отдельную таблицу под связи не так рационально, как писать несколько значений в одно поле через разделитель(скажем, ээээ... запятую), достаточно редки. потому лучше сделать вариант с выделением связей в отдельную таблицу приоритетным в голове(при проектировании БД) |
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |