1 (изменено: grogen, 2013-01-30 23:19:30)

Тема: Связи между таблицами

Доброго вечера!
Никак не получается разобраться со связями в myadmin. Кто пишет, что связи можно делать, кто пишет что нужно использовать JOIN .
Пример
Первая таблица "Имена":
1 Саша
2 Маша
3 Витя
Вторая должности
1 Админ
2 Юзер

Логично же вроде в первой таблице задать связи , каждому человеку задать связь с должностью из второй таблицы.
Как это можно осуществить? или связи всё таки не нужны?

2

Re: Связи между таблицами

Создайте в таблице "Имена" столбец "группа" и каждой записи укажите соответствующий идентификатор группы. Конструкция JOIN позволит сделать выборку объединив две таблицы в одном запросе. С помощью Дизайнера связей в phpMyAdmin связи можно отобразить указав как именно таблицы должны соединяться.

3

Re: Связи между таблицами

Hanut сказал:

Создайте в таблице "Имена" столбец "группа" и каждой записи укажите соответствующий идентификатор группы. Конструкция JOIN позволит сделать выборку объединив две таблицы в одном запросе. С помощью Дизайнера связей в phpMyAdmin связи можно отобразить указав как именно таблицы должны соединяться.

То есть в таблице имена создаём ещё один столбец в котором заносим не сами значения должности, а идентификаторы значений? То есть так:
-------
id | Имя | Должность
1 | Вася | 1
2 | Костя | 1
3 | Катя | 2

Или должность прописывать словами?

4

Re: Связи между таблицами

grogen сказал:

То есть в таблице имена создаём ещё один столбец в котором заносим не сами значения должности, а идентификаторы значений?

Совершенно верно. Тогда объединение таблиц с помощью JOIN будет по ключам.

SELECT * FROM `table_name`
INNER JOIN `table_group` ON `table_name`.`group_id` = `table_group`.`id`

5

Re: Связи между таблицами

Тогда я не понимаю смысла таблицы "группы", почему не проще вместо group_id в таблице name, сразу сделать так:
id | Имя | Должность
1 | Вася | админ
2 | Костя | админ
3 | Катя | юзер

6

Re: Связи между таблицами

я перехожу с аксесса, поэтому такие вопросы...)

7

Re: Связи между таблицами

grogen сказал:

Тогда я не понимаю смысла таблицы "группы"

Потому что в таблице группы может быть не только ее название, но и еще дополнительные поля, например, задающие уровень привилегий. таким образом уменьшается избыточность хранимой информации.