![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
многотабличное редактирование [D6]
Tauren_chief © (2002-07-24 13:52:00)Проблема в следующем, есть, если совсем упростить, 3 таблицы:
table1(table1_id, table2_id, table3_id), table2(table2_id, table2_info), table3(table3_id, table3_info). Соответственно в 1 табличке хранятся id-ники остальных 2-х таблиц, а во 2-й и 3-й сама инфа, которую и требуется отобразить. Отобразить то еще можно, а вот добавить возможность редактирования уже напряженно... Т.е при добавлении допустим в table3_info данных происходит автоматическое увеличение table3_id в table3, а так как таблички связаны, то дальше идет ругань на попытку изменения table3_id в table1 :(( Не подмайте что я ленивый, понятно что все можно написать sql-query, просто BD уж больно здоровая... Хотелось бы все как раз и готова :) Может кто что-нибудь посоветовать?
MsGuns (2002-07-24 17:55:00) [1]Val указал самое надежное средство ! Зачем добавлять в детал значение связующего ключа, если оно подразумевается (при условии, конечно, что DataSet`ы связаны отношением Master-Detail
Val (2002-07-24 15:07:00) [2]если первая таблица нужна для развязки М:М, то первое поле там не нужно, сама пара(id2,id3) д.б. уникальна.
Sergey13 (2002-07-24 15:05:00) [3]2Tauren_chief (24.07.02 14:44)
Так по твоему описанию получается что не 1 мастер для 2 и 3. А 2 и 3 мастера для 1. Тогда непонятно почему у тебя в первую что то автоматом пишется. Ведь вводя в 3 таблицу новую сущность ты не описываешь как она соотносится с сущностями из 2 таблицы. Это уже другое действие. У тебя наверное форин кеи неправильно определены потому и ругается. Не 2 и 3 ссылаются на 1, а наоборот.
Lord Warlock (2002-07-24 14:47:00) [4]
> Tauren_chief (24.07.02 14:44)
Понял о чем речь, к сожалению за тебя не написали.
Lord Warlock (2002-07-24 14:45:00) [5]
> Johnmen © (24.07.02 14:33)
Какая разница. имеется в виду одно и то же
Tauren_chief (2002-07-24 14:44:00) [6]Да как же странная? Помоему самоя что ни на есть типовая... Вот скажем есть у нас регион, и есть у нас допустим типовая продукция. Регионов у нас 89, продукции допустим 100 типов. А записей в БД 1000. Соответственно избавляемся от связей M:M, для чего делаем 3 таблички, в одной регион, в другой продукция, 3-ей связываем... А теперь надо написать клиентика чтобы он мог записи вносить, изменять и просматривать. По началу я хотел честно, по человечески, нарисовать обычных скажем Edit"ов и кнопочку, нажимаешь идет проверка на существование уже такой записи, если нет, то вставляем, ну понятно короче... Потом подумал, вдруг уже все написали до меня :)
Задачка то уж больно типовая.
Johnmen (2002-07-24 14:33:00) [7]>Lord Warlock © (24.07.02 14:19)
По-моему ты путаешься в понятиях "мастер-детейл" и "главный-подчиненный" ... :)))
Lord Warlock (2002-07-24 14:19:00) [8]Вообще-то по правилам сначала вносится запись в главную таблицу, иначе записи в рабских таблицах "повисают неизвестно где", те может все пройти без ошибки, только этих записей больше не увидишь. Но если курсор в главной таблице установлен на какую-либо запись, добавляться должно без проблем. А дело очевидно в том, что при работе с такими вещами как MySQL невозможно автоматически получить ID для связи с таблицами, так что пиши запрос...
И еще, если id рабских таблиц увеличивается само, эти id нельзя использовать для связи мастер-раб. id для раба должно приходить от мастера.
Честно говоря странная задача...
Val (2002-07-24 14:15:00) [9]связь не очень понятна-если вы вставляете запись допустим в 3-ю таблицу, вам естественно нужно затем добавить новую запись в первую, где будут заполнены поля id1, id3, а как же быть с id2? или вы добавляете сразу во 2-ю и 3-ю? тогда последовательность такова-добавление в 2,3(или наоборот), затем добавление полученных id в первую, правильно?
Tauren_chief (2002-07-24 14:04:00) [10]1.mysql
2.Да
Lord Warlock (2002-07-24 14:03:00) [11]Таблица1 - мастер для 2 и 3?
Val (2002-07-24 13:58:00) [12]тип субд?