![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Raiser |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 30.5.2006 Репутация: нет Всего: нет |
Здравствуйте, хочу разобраться со связанными таблицами.
У меня есть несколько таблиц: Таблица maininf | id | name | link | description | | 1 | some | ht. | blablabla | id - первичный ключ, уникальный name - имя описываемого объекта, в этой таблице содержится основная информация. Есть ещё одна таблица, с дополнительной информацией по каждому объекту: Таблица moreinf | id | name | some1 | some2 | | 1 | some | ht. | blablabla | В этой таблице id - первичный, уникальный name - внешний ключ, то есть по этому полю будет проводится сопоставоение записей таблиц. Вопрос вот в чем: как создать (какой запрос необходим), чтобы правильно создать вторую таблицу с внешним ключем? И как производить выборку данных, например, мне надо по id найти name в первой таблице и имея этот name во второй таблице получить дополнительные данные по описываемому объекту? Это сообщение отредактировал(а) Raiser - 28.7.2006, 09:19 |
|||
|
||||
| SamDark |
|
|||
|
Добрый кот ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1424 Регистрация: 25.7.2006 Где: Voronezh Репутация: 2 Всего: 38 |
Raiser
1. Не стоит дублировать name в 2-х таблицах. 2. Для вставки сначала заносим данные в первую таблицу, затем во вторую (во второй ключ не автоинкрементный) с использование в качестве значения id функцию LAST_INSERT_ID(). 3. Выборка из обоих таблиц будет представлять из себя что-то вроде
-------------------- rmcreative.ru — Это жжж неспроста... yiiframework.ru — О фреймворке Yii на русском. reggi — здесь я регистрирую домены |
|||
|
||||
| madFobos |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 102 Регистрация: 7.12.2005 Репутация: 1 Всего: 3 |
Никогда не стоит делать связь между таблицами по текстовому полю (в твоем случае name), т.к. 1) сравнение строк происходит на порядок мделеннее чисел (при SELECT), а второе ты не сможешь использовать такую возможность как LAST_INSER_ID() при вставке. Так же не стоит во всех таблицах делать первичный ключ с именем id, а то потом запутаешься в связях между таблицами.
Я бы таблицы переделал так для начала maininf_id | name | link | description moreinf_id | maininf_id | some1 | some2 Ну и вставка будет примерно такая
Это сообщение отредактировал(а) madFobos - 31.7.2006, 23:46 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |