| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > СУБД, общие вопросы > несколько значений в поле |
| Автор: DsKTY 21.2.2008, 22:21 |
| Доброго времени суток. Допустим есть 2 таблицы users (с полями name и group) и groups (с полями id и info). Если пользователь входит в какую-то группу, то в users.group будет указан номер этой группы. Вопрос такой: как сделать так что бы пользователь мог принадлежать нескольким группам, т.е. указать в users.group несколько значений ссылающихся на разные строки в groups?? |
| Автор: skyboy 21.2.2008, 22:52 |
| ввести дополнительную таблицу users_and_groups где будет два поля: idgroup и iduser. оба поля будут входить в состав первичного ключа(составной ключ получается), в принципе, поле-идентификатор(автоинкрементное поле) при таком раскладе не обязательно. таким образом, входждение определенного пользователя в определенную группу будет фиксироваться при помощи отдельной записи из двух полей. уникальность сочетания пользователь + группа(чтоб пользователь не мог войти в одну и ту же группу дважды) гарантируется механизмом первичного ключа. удалить пользователя из группы можно удалением одной конкретной записи из этой таблицы. посчитать количество пользователей в группе и групп, к которым принадлежит пользователь, тоже не составит труда: с использованием count(*). само вынесение связей в отдельную таблицу является частью процесса, называемого нормализацией и призванного упростить работу с проектируемой базой данных. |
| Автор: DsKTY 22.2.2008, 13:41 |
| хм.. .действительно. как-то не подумал про отдельную таблицу. спасибо |
| Автор: skyboy 22.2.2008, 14:46 | ||
Чтобы пометить вопрос решенным найди над своим первым постом темы в правом верхнем углу поста ссылку "Пометить вопрос решенным!" Добавлено через 1 минуту и 37 секунд кстати говоря, ситуации, когда делать отдельную таблицу под связи не так рационально, как писать несколько значений в одно поле через разделитель(скажем, ээээ... запятую), достаточно редки. потому лучше сделать вариант с выделением связей в отдельную таблицу приоритетным в голове(при проектировании БД) |