Форум: "Базы";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];
ВнизКак немного автоматизировать базу Найти похожие ветки
← →
rtooo (2003-12-19 01:12) [0]Помогите пожалуйста, как это реализовать в InterBase 6?
Как сделать так, чтобы при добавлении данных в одну строку таблицы, некоторые данные автоматически переходили бы в другую таблицу.
Допустим в таблице "А" я заполнил поля ФИО,Адрес,Телефон
и данные из поля "Адрес" перешли автоматически в таблицу "Б" в её поле "Адрес".
Это наверно тригер надо писать, но я не нашёл никакой инфы.
Извините за ламерский вопрос, я только учусь :)
Заранее ограмное спасибо!
← →
ЮЮ (2003-12-19 02:34) [1]В таблицах кроме полей есть ещё и записи.
> Допустим в таблице "А" я заполнил поля ФИО,Адрес,Телефон
и данные из поля "Адрес" перешли автоматически в таблицу "Б"
В поле какой записи? И если правило токое однозначное, то в таблице Б вообще не место этому полю. Надо просто правильно спроектировать структуру таблиц
← →
rtooo (2003-12-19 03:05) [2]И в "А" и в "Б" первая запись.
В "А" я заполняю ФИО,Адрес,Тел, а в таблице "Б" в записи под таким же номером ввожу другие данные Паспорт, Место рождения, Адрес, "Адрес" же один и тот же, что и в "А" (он просто дублируется)
Причём таблица "А" является ведущей.
Если удалить запись из "Б" то эта запись(строка) удалиться и в "А" и наоборот, они связаны вплотную, но первой всегда заполняется таблица "А".
Структура таблицы уже точно спроектированна на все 100%. Только остаётся реальзация ... никак не могу справиться :)
← →
ЮЮ (2003-12-19 03:29) [3]>"Адрес" же один и тот же, что и в "А" (он просто дублируется)
Вот этого и не надо
Ведь всегда можно "добраться" до "Адреса" в А, работая с таблицей Б, коль у них такая "плотная" связь :-)
← →
Ильш (2003-12-19 06:19) [4]Таблица А:
ID
FIO
Adres
Tel и т.д.
Таблица Б:
A_ID
Pasport
Mesto_ro и т.д.
У тебя примерно так???
Тогда какой смысл дублировать данные??? В Таблице Б не должно быть поля АДРЕС !!!
До Адреса можно добраться по связи.
Вообще прежде чем приступать к таких серьезным вещас как Базы Данных надо хотя бы немного почитать ТЕОРИЮ БД. Тольео не спрашивай ссылки. Есть одна ссылка - книжный магазин. А ну еще Яндекс.
Обязательно сначала теория! Иначе столько ошибок наделаешь, потом ввек не расхлебаешь!
← →
Sergey13 (2003-12-19 08:42) [5]А зачем вообще вторая таблица? Я бы все в одну влепил.
← →
stud (2003-12-19 09:21) [6]
> Sergey13 © (19.12.03 08:42) [5]
и это правильно)))))
← →
Ильш (2003-12-19 09:36) [7]Во во точно!
Если бы товарищ rtooo нам объяснил для чего он делит на две таблицы. Высокий смысл своих мучений. ТОгды бы может че и посоветовали :)
← →
rtooo (2003-12-19 11:29) [8]Объясняю...всё конечно приведено для примера
Есть несколько клиентов, они работают с разными делами значит и с разными таблицами. Все эти таблицы очень огромные. Просто некоторые поля у них совпадают
Есть смысл разделить их, (хотя некоторые поля из них совпадают)...Это я делаю для удобства дальнейшей доработки программы (клиента) и для удобства использования и форматирования базы.
Пример:
Главный чувак заполнил первую запись первой таблицы...заполнил кучу полей первой записи.
Другой чувак работает со второй таблицей. Он из проги(клиента) добавляет поля во вторую таблицу (но тоже в 1 запись) и чтобы ему лишний раз не париться, не узнавать, что написанно в поле допустим "Адрес", ведущей, первой таблицы, так как он заполняет данные, которые нужны именно для этого клиента, так же туда и ФИО дублируется, ну это не важно. Всё, он заполнил 1 запись второй таблицы, для автоматизации перешли некоторые поля этой же записи из первой таблицы.
Третий заполняет только 3 таблицу так же, как и второй
Вот теперь объяснил?
В основном для удобства.
Литературы накупил но не могу найти, всё ночь сидел а работу уже нужно скоро сделать (через пару дней) а в этой проге-клиенте ещё целая куча дел....не успеваю, вот поэтому и обращаюсь к мастерам :)
← →
Sergey13 (2003-12-19 11:55) [9]2rtooo (19.12.03 11:29) [8]
Какое же это удобство. Поменял главный чувак адрес, а второму не сказал. И сидят в "удобной базе" два адреса. ИМХО, по теории БД надо бы потщательнее.
← →
Ильш (2003-12-19 11:58) [10]На триггерах. Че там искать то???
Итак ясно. Про триггеры много чего написано.
Ну можешь вручную написать обработочку. Что непонятого то тут?? Тебе полную реализацию что ли надо прописать?
А вообще как тебе удалось не зная БД получить такую работу? Ты похоже взялся за работу сам не понимаю куда сунулся. :)))
Вот так в основном то и пишут проги... :((((
← →
JibSkeart (2003-12-19 12:04) [11]Ээ да вы батенька моньяк :)))
кто же так делает то ?
я предстовляю какая запарка у тебя будет когда ты захочешь отчеты выводить :)
← →
Deniz (2003-12-19 12:05) [12]Все это не правильно :( но ...
По вопросу:
create trigger ... table1 after insert as
begin
insert into table2(id2, ref_id1, adress)
values(gen_id(...), :new.id1, new.adress);
...
end;
id1, id2 - PK к таблице 1 и 2 соот-но
ref_id1 - FK из таб2 к таб1, или как там у тебя построено
То же можно проделать и с остальными таблицами, но стоит подумать о структуре БД и логике приложения
← →
rtooo (2003-12-19 12:09) [13]Для Sergey13: Если главный чувак поменял адрес то он автоматически измениться в другой таблице и наоборот как бы они взаимосвязаны.(так нужно сделать)
Для Ильш: Работу я не получал,просто попросили сделать по дружбе, за бесплатно, и зачем задавать такие вопросы %)
Мне полную реальзицию не надо мне нужно знать как это реализовать и допустим если это делается спомощью трегеров или хранимых процедур небольшой кусок кода для примера...чтоб прояснилось...потом сам додумаю...больше ничего не надо
ОСНОВНОЙ ВОПРОС В ТОМ: С ПОМОЩЬЮ ЧЕГО ЭТО РЕАЛЬЗУЕТСЯ???
← →
HSolo (2003-12-19 13:28) [14]Ваше упорство достойно лучшего применения :))
Во-первых, Вам уже ответили: с помощью триггеров. Причем на обе таблицы, и на insert, и на update. Пример - см. Deniz © (19.12.03 12:05) [12]
А во-вторых, ну объясните, пожалуйста, почему этот несчастный адрес надо дублировать в 2 таблицах? Что мешает связать в запросе 2 таблицы? Незнание SQL? :))
← →
rtooo (2003-12-19 14:32) [15]Я понял что с помощью трегеров, просто написал уже поздно своё сообщение.
Скорее всего незнание SQL, потому что я пока только смог поверхостно осилить и понят базы данных...И пытаюсь сделать всё тем методом, который более знаю.
Извините за ламерство :). Некогда просто всё это изучить
← →
Рамиль (2003-12-20 14:47) [16]
> Некогда просто всё это изучить
Тогда и нечего браться за такое. Просто бессмысленная трата времени.
← →
Term (2003-12-21 10:00) [17]2 rtooo
почитай документацию о нормализации БД и избыточности информации, и о том как организуется связь мастер-детальный, то что ты хочеш сделать, с помошью тригеров перекидывать адреса и прочее полный бред, послушай тех кто тебе советует, потрать пару дней на чтение литературы и сделай по человечески
← →
Anatoly Podgoretsky (2003-12-21 11:35) [18]Рамиль © (20.12.03 14:47) [16]
При том как можно на ранней стадии, пока не натворил более серьезных дел.
← →
rtooo (2003-12-22 00:50) [19]Я понял всё ребята..действительно я маразмом страдал, просто ещё плохо представлял что из себя представляют базы данных, теперь всё вроде нормально.
Я реализовал это, а потом подумал "А нархена это надо? :)"
Всех благодарю за помощь, не бросили бедного ламака, а всё объяснили.
Лана мне надо завтра весь ORACLE изучить...думаю успею...
шутка :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.01.16;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.009 c