![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Цербер |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 333 Регистрация: 21.11.2007 Репутация: нет Всего: 1 |
доброе время суток.
у меня 2 таблицы, в обеих есть поле id, в обеих табицах он первичный. я за свою короткую практику не сталкивался со связанными таблицами, если кто то может объяснить как работать с ними, или дать ссылку на статью с доступным объяснением, буду очень признателен. заранее всех благодарю! Это сообщение отредактировал(а) Цербер - 23.12.2007, 01:26 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
ну, это физическая структура. а логически таблицы как связаны? по этому id, уникальному для обоих таблиц? если да - то почему не объединить таблицы в одну? если нет - то где связь? информации мало. |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 4 Всего: 91 |
Как я понял автору надо что то типа того. Это сообщение отредактировал(а) gta4kv - 23.12.2007, 11:32 |
|||
|
||||
| Цербер |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 333 Регистрация: 21.11.2007 Репутация: нет Всего: 1 |
если их можно обеъденить в одну то это вообще замечательно. если не сложно покажите как объденить? |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
не знаю, понял ли ты, что я имел в виду.
вот пара таблиц: первая: idMan - уникальный идентификатор name - имя вторая: idMan - уникальный идентификатор surname - фамилия сам видишь, эти две таблицы связаны по idMan. связь один-к-одному. вполне можно совместить в одну таблицу: idMan - первичный ключ, уникальный идентификатор name - имя surname - фамилия -- если у тебя ситуация другая или связь не один-к-одному, то приведи больше информации. из
понятно мало. -- впрочем, обрати внимание на пост товарища gta4kv. возможно, он быстрее меня догадался, что же тебе надо. |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 4 Всего: 91 |
skyboy, как я понял он делает join запрос, но у него в обеих таблицах есть поле id.
Ведь в результате ведь не будет две таблицы с одинаковым именем.. Делая запрос
Мы получаем все поля таблиц table1 и table2, а вот id поле будет только одно. Это сообщение отредактировал(а) gta4kv - 23.12.2007, 17:41 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
и в обоих таблицах это первичный ключ. он сам так сказал. если связь идет именно по этому полю id, то очень странно генерировать в двух таблицах синхронно два одинаковых автоинкрементных поля. если же связь по другому полю, то пускай так и пишет. а гадать можно хоть до следующей недели. разве? |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 4 Всего: 91 |
Ну я так предполагаю ^_______^ видимо опять соврал :( Это сообщение отредактировал(а) gta4kv - 23.12.2007, 19:01 |
|||
|
||||
| Цербер |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 333 Регистрация: 21.11.2007 Репутация: нет Всего: 1 |
уважаемые расскажу всю ситуацию=)
существует 2 таблицы 1-ая табл выглядит примерно так: поле id - первичное-автоинкремент-новый id автоматом становится +1 от последнего поле логин поле пасворд 2-ая табл поле id - первичное-автоинкремент-новый id автоматом становится +1 от последнего поле about Поле info ну как вы поняли 2 таблицы, в одной логин и пас, в другой инфа всякая. как сделать, что бы, при регистрации юзеря в таблицу №1 ему создавался id и в таблице №2 и в дальнейшем делать update select insert из таблицы №2 зная логин из таблицы №1. и буду очень признателен если кто нить оставит ссылку на статью о связывание таблиц в мускуле для дальнейшего ознакомления и инструктажа!!! |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
об одном и том же человеке? если да - то почему все это не в одной таблице?! JOIN(по-английски) JOIN(по-русски) статья мануала MySQL(по-английски) |
|||
|
||||
| gta4kv |
|
|||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 4 Всего: 91 |
Имхо, запрос для выбора тогда должен выглядить так:
+1 к мысли skyboy, почему бы не сделать это в одну таблицу? Вроде бы НФ* не нарушает. *Нормальная форма Это сообщение отредактировал(а) gta4kv - 23.12.2007, 23:13 |
|||
|
||||
| Цербер |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 333 Регистрация: 21.11.2007 Репутация: нет Всего: 1 |
да я тоже так думаю но не я эти таблицы делал а переделывать в лом уже около 1000 юзеров тем. спасибо за ссылки почитаю обязательно! если есть исчо ссылки у кого нить не жалейте=) |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
ну-ну. вот заимеешь проблем - поздно будет. вот смотри, у тебя id в обоих таблицах - автоинкрементное поле? если да, то представь, что в результате ошибки при вставке в одну таблицу запись вставится, а в другую - нет. А транзакций, как мне кажется, у тебя нету. значит, для всех последующих пар записей, вставляемых одновременно, id будут различаться и ты уже не соберешь до кучи информацию о людях - у тебя данных будут выбираться о разных людях. если же у тебя автоинкрементным поле является только в одной таблице, то разве не странно вставляться запись, получаться её id и вставлять в другую таблицу запись с этим id, когда такой схемы можно было бы избежать?! причем тут количество записей?! изменить структуру одной таблицы - один запрос. перебросить связанные данные из второй таблицы в добалвенные, но пока пустые поля первой таблицы - ещё один запрос. итого - два SQL запроса. СУБД все сделает за тебя. Ну, и изменить запрос на выборку. Впрочем, раз ты ещё только спрашивал, как таблицы связывать, то, видимо, никакой запрос на выборку данных у тебя не используется. Правда? Впрочем, если хочешь проблем - и дальше оправдывай бездеятельность фразой "переделывать влом". Добавлено через 4 минуты и 35 секунд так как это все аттрибуты одной сущности, то согласно практически всем НФ поля и должны к одной таблице относиться. Исключения возможны только для НФ выше 2, при условии, что поля могут быть незаполнены(NULL) - тогда их надо бы в отдельную таблицу. Но в данном случае, мне кажется, текстовые поля все равно будут не NULL, а просто пустой строкой. В таком случае, должно всем НФ соотвествовать Впрочем, НФ - это не более, чем рекомендация, являющаяся лучшим решением в большинстве случаев. |
|||
|
||||
| gta4kv |
|
||||||
![]() Walking around mad. ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1868 Регистрация: 25.7.2006 Репутация: 4 Всего: 91 |
Хм.. Я что-то такого прям не помню. Хотя я их и не зубрил особо. ^_^
Может и рекомендация, но еслибы ее придерживались было бы гораздо проще всем жить. Вот как заглянешь в структуру базы какого нибудь новичка. Этож [censored].
Это сообщение отредактировал(а) skyboy - 23.12.2007, 23:53 |
||||||
|
|||||||
| Цербер |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 333 Регистрация: 21.11.2007 Репутация: нет Всего: 1 |
skyboy
спасибо, вразумил. лучше я ща помучаюсь и перенесу все логины и пасы в одну таблицу с инфой, чем потом буду мучаться.
ну как структуру изменить таблицы я понял - добавить 2 поля, а как одним запросом перенести все логины и пароли в другую таблицу да и ещё одним запросом?поведай об этом гуру=) а то придётся в ручную через UPDATE =)
а можете объяснить что такое НФ? Это сообщение отредактировал(а) Цербер - 23.12.2007, 23:27 |
||||
|
|||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |