|
|
|
Множественные связи
|
|||
|---|---|---|---|
|
#18+
Подскажите, пожалуйста, по проектированию. Есть таблица с ФИО, хобби. Код: sql 1. 2. 3. 4. 5. 6. 7. И, соответственно, справочник по хобби. Код: sql 1. 2. 3. 4. 5. Если хобби одно, то все ок students.hobby_ids ссылается на конкретное поле в таблице hobby. Но у человека может быть несколько хобби... Как лучше это реализовать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2014, 12:11 |
|
||
|
Множественные связи
|
|||
|---|---|---|---|
|
#18+
Maks112Если хобби одно, то все ок students.hobby_ids ссылается на конкретное поле в таблице hobby. Но у человека может быть несколько хобби... Как лучше это реализовать?"Много-во-много" физически реализуется через дополнительную таблицу со связям "один-во-много" в обе стороны... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2014, 14:05 |
|
||
|
Множественные связи
|
|||
|---|---|---|---|
|
#18+
sphinx_mv, Спасибо, сделал дополнительную таблицу Код: sql 1. 2. 3. 4. 5. 6. Поле hobbys.student-id ссылается на students.index, соответственно hobbys.hobby-id ссылается на hobby.number. Вроде понятно. Теперь запросами типа: Код: sql 1. Код: plaintext 1. 2. Код: sql 1. Код: plaintext 1. 2. 3. 4. 5. Код: sql 1. Код: plaintext 1. 2. 3. 4. 5. можно получить список хобби для студента Ivanov. А как можно это в одном запросе сделать? И еще вопрос. Если из таблицы students удаляется/обновляется запись, как автоматизировать удаление/обновление данных в таблице hobbys? Примерчик бы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2014, 15:35 |
|
||
|
Множественные связи
|
|||
|---|---|---|---|
|
#18+
Maks112А как можно это в одном запросе сделать? Использовать JOIN, вестимо.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2014, 15:56 |
|
||
|
Множественные связи
|
|||
|---|---|---|---|
|
#18+
Maks112Если из таблицы students удаляется/обновляется запись, как автоматизировать удаление/обновление данных в таблице hobbys? Примерчик бы... думал-думал, не придумал как изменение имени студента может повлиять на изменение хобби. Сможете объяснить? А при удалении вариантов тьма. Можно аналогичным удалению из таблицы студентов запросом (при нормальном, то бишь одинаковом, именовании полей идентификаторов в разных таблицах достаточно просто имя таблицы в запросе поменять), а можно и триггер повесить на таблицу студентов. Но вот что мне не даёт покоя... Как это связано с проектированием БД? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 12:31 |
|
||
|
Множественные связи
|
|||
|---|---|---|---|
|
#18+
нихрена не телепатдумал-думал, не придумал как изменение имени студента может повлиять на изменение хобби. Сможете объяснить? Ну как же... был Иванов Александр Борисович... стала Иванова Александра Борисовна... любил хоккей, стала любить шопинг.... А вот вопрос... а нужно ли хранить информацию что раньше любил хоккей? и до какого момента )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 12:53 |
|
||
|
Множественные связи
|
|||
|---|---|---|---|
|
#18+
lLocustНу как же... был Иванов Александр Борисович... стала Иванова Александра Борисовна... любил хоккей, стала любить шопинг.... В процессе обдумывания такая ситуация не исключалась, однако тут может быть вариант, что изменение имени произошло, чтобы ещё больше любить хоккей. Потому всё-таки связи изменения имени с изменением хобби не видно. Оно конечно может произойти изменение хобби с изменением имени, но автоматизации это как-то плохо поддаётся... lLocustнужно ли хранить информацию что раньше любил хоккей? и до какого момента )) ну и причём тут автоматизация? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 13:40 |
|
||
|
Множественные связи
|
|||
|---|---|---|---|
|
#18+
нихрена не телепатну и причём тут автоматизация? Автоматизация может и не причем, а вот схему менять нужно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 14:28 |
|
||
|
Множественные связи
|
|||
|---|---|---|---|
|
#18+
Maks112, авторCREATE TABLE IF NOT EXISTS `hobbys` ( `student-id` int(10) unsigned NOT NULL, `hobby-id` int(10) unsigned NOT NULL, У родителей так же назовите рукоятки: `student-id` int(10) unsigned NOT NULL `hobby-id` int(10) unsigned NOT NULL и тогда базовый запрос будет таким Код: sql 1. 2. 3. 4. 5. Послей n:n не увидите, там и смотреть не на что, а примари будут по одному каждый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 15:07 |
|
||
|
Множественные связи
|
|||
|---|---|---|---|
|
#18+
Да, идентификаторы с минусами это, конечно, сильный ход. Тогда уж сразу с пробелами чтоб хоть какая-то прибыль была. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 15:09 |
|
||
|
Множественные связи
|
|||
|---|---|---|---|
|
#18+
автор Но у человека может быть несколько хобби... Как лучше это реализовать? Хуже того, более чем 1 человек могут заниматься одним и тем же бездельем. Выбрать всех студентов подверженных данному хобби. select * from students join hobbys using(students_id) join hobby using(hobby_id) where hobby_description = 'писать на форумах' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2014, 15:13 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=38555791&tid=1540984]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
171ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 277ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...