![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как немного автоматизировать базу [D6, D7, IB6.x]
rtooo © (2003-12-19 01:12:00)
Помогите пожалуйста, как это реализовать в InterBase 6?
Как сделать так, чтобы при добавлении данных в одну строку таблицы, некоторые данные автоматически переходили бы в другую таблицу.
Допустим в таблице "А" я заполнил поля ФИО,Адрес,Телефон
и данные из поля "Адрес" перешли автоматически в таблицу "Б" в её поле "Адрес".
Это наверно тригер надо писать, но я не нашёл никакой инфы.
Извините за ламерский вопрос, я только учусь :)
Заранее ограмное спасибо!
rtooo (2003-12-22 00:50:00) [1]
Я понял всё ребята..действительно я маразмом страдал, просто ещё плохо представлял что из себя представляют базы данных, теперь всё вроде нормально.
Я реализовал это, а потом подумал "А нархена это надо? :)"
Всех благодарю за помощь, не бросили бедного ламака, а всё объяснили.
Лана мне надо завтра весь ORACLE изучить...думаю успею...
шутка :)
Anatoly Podgoretsky (2003-12-21 11:35:00) [2]
Рамиль © (20.12.03 14:47) [16]
При том как можно на ранней стадии, пока не натворил более серьезных дел.
Term (2003-12-21 10:00:00) [3]
2 rtooo
почитай документацию о нормализации БД и избыточности информации, и о том как организуется связь мастер-детальный, то что ты хочеш сделать, с помошью тригеров перекидывать адреса и прочее полный бред, послушай тех кто тебе советует, потрать пару дней на чтение литературы и сделай по человечески
Рамиль (2003-12-20 14:47:00) [4]
> Некогда просто всё это изучить
Тогда и нечего браться за такое. Просто бессмысленная трата времени.
rtooo (2003-12-19 14:32:00) [5]
Я понял что с помощью трегеров, просто написал уже поздно своё сообщение.
Скорее всего незнание SQL, потому что я пока только смог поверхостно осилить и понят базы данных...И пытаюсь сделать всё тем методом, который более знаю.
Извините за ламерство :). Некогда просто всё это изучить
HSolo (2003-12-19 13:28:00) [6]
Ваше упорство достойно лучшего применения :))
Во-первых, Вам уже ответили: с помощью триггеров. Причем на обе таблицы, и на insert, и на update. Пример - см. Deniz © (19.12.03 12:05) [12]
А во-вторых, ну объясните, пожалуйста, почему этот несчастный адрес надо дублировать в 2 таблицах? Что мешает связать в запросе 2 таблицы? Незнание SQL? :))
rtooo (2003-12-19 12:09:00) [7]
Для Sergey13: Если главный чувак поменял адрес то он автоматически измениться в другой таблице и наоборот как бы они взаимосвязаны.(так нужно сделать)
Для Ильш: Работу я не получал,просто попросили сделать по дружбе, за бесплатно, и зачем задавать такие вопросы %)
Мне полную реальзицию не надо мне нужно знать как это реализовать и допустим если это делается спомощью трегеров или хранимых процедур небольшой кусок кода для примера...чтоб прояснилось...потом сам додумаю...больше ничего не надо
ОСНОВНОЙ ВОПРОС В ТОМ: С ПОМОЩЬЮ ЧЕГО ЭТО РЕАЛЬЗУЕТСЯ???
Deniz (2003-12-19 12:05:00) [8]
Все это не правильно :( но ...
По вопросу:
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, или как там у тебя построено
То же можно проделать и с остальными таблицами, но стоит подумать о структуре БД и логике приложения
JibSkeart (2003-12-19 12:04:00) [9]
Ээ да вы батенька моньяк :)))
кто же так делает то ?
я предстовляю какая запарка у тебя будет когда ты захочешь отчеты выводить :)
Ильш (2003-12-19 11:58:00) [10]
На триггерах. Че там искать то???
Итак ясно. Про триггеры много чего написано.
Ну можешь вручную написать обработочку. Что непонятого то тут?? Тебе полную реализацию что ли надо прописать?
А вообще как тебе удалось не зная БД получить такую работу? Ты похоже взялся за работу сам не понимаю куда сунулся. :)))
Вот так в основном то и пишут проги... :((((
Sergey13 (2003-12-19 11:55:00) [11]
2rtooo (19.12.03 11:29) [8]
Какое же это удобство. Поменял главный чувак адрес, а второму не сказал. И сидят в "удобной базе" два адреса. ИМХО, по теории БД надо бы потщательнее.
rtooo (2003-12-19 11:29:00) [12]
Объясняю...всё конечно приведено для примера
Есть несколько клиентов, они работают с разными делами значит и с разными таблицами. Все эти таблицы очень огромные. Просто некоторые поля у них совпадают
Есть смысл разделить их, (хотя некоторые поля из них совпадают)...Это я делаю для удобства дальнейшей доработки программы (клиента) и для удобства использования и форматирования базы.
Пример:
Главный чувак заполнил первую запись первой таблицы...заполнил кучу полей первой записи.
Другой чувак работает со второй таблицей. Он из проги(клиента) добавляет поля во вторую таблицу (но тоже в 1 запись) и чтобы ему лишний раз не париться, не узнавать, что написанно в поле допустим "Адрес", ведущей, первой таблицы, так как он заполняет данные, которые нужны именно для этого клиента, так же туда и ФИО дублируется, ну это не важно. Всё, он заполнил 1 запись второй таблицы, для автоматизации перешли некоторые поля этой же записи из первой таблицы.
Третий заполняет только 3 таблицу так же, как и второй
Вот теперь объяснил?
В основном для удобства.
Литературы накупил но не могу найти, всё ночь сидел а работу уже нужно скоро сделать (через пару дней) а в этой проге-клиенте ещё целая куча дел....не успеваю, вот поэтому и обращаюсь к мастерам :)
Ильш (2003-12-19 09:36:00) [13]
Во во точно!
Если бы товарищ rtooo нам объяснил для чего он делит на две таблицы. Высокий смысл своих мучений. ТОгды бы может че и посоветовали :)
stud (2003-12-19 09:21:00) [14]
> Sergey13 © (19.12.03 08:42) [5]
и это правильно)))))
Sergey13 (2003-12-19 08:42:00) [15]
А зачем вообще вторая таблица? Я бы все в одну влепил.
Ильш (2003-12-19 06:19:00) [16]
Таблица А:
ID
FIO
Adres
Tel и т.д.
Таблица Б:
A_ID
Pasport
Mesto_ro и т.д.
У тебя примерно так???
Тогда какой смысл дублировать данные??? В Таблице Б не должно быть поляАДРЕС !!!
До Адреса можно добраться по связи.
Вообще прежде чем приступать к таких серьезным вещас как Базы Данных надо хотя бы немного почитать ТЕОРИЮ БД. Тольео не спрашивай ссылки. Есть одна ссылка - книжный магазин. А ну еще Яндекс.
Обязательно сначала теория! Иначе столько ошибок наделаешь, потом ввек не расхлебаешь!
ЮЮ (2003-12-19 03:29:00) [17]
>"Адрес" же один и тот же, что и в "А" (он просто дублируется)
Вот этого и не надо
Ведь всегда можно "добраться" до "Адреса" в А, работая с таблицей Б, коль у них такая "плотная" связь :-)
rtooo (2003-12-19 03:05:00) [18]
И в "А" и в "Б" первая запись.
В "А" я заполняю ФИО,Адрес,Тел, а в таблице "Б" в записи под таким же номером ввожу другие данные Паспорт, Место рождения, Адрес, "Адрес" же один и тот же, что и в "А" (он просто дублируется)
Причём таблица "А" является ведущей.
Если удалить запись из "Б" то эта запись(строка) удалиться и в "А" и наоборот, они связаны вплотную, но первой всегда заполняется таблица "А".
Структура таблицы уже точно спроектированна на все 100%. Только остаётся реальзация ... никак не могу справиться :)
ЮЮ (2003-12-19 02:34:00) [19]
В таблицах кроме полей есть ещё и записи.
> Допустим в таблице "А" я заполнил поля ФИО,Адрес,Телефон
и данные из поля "Адрес" перешли автоматически в таблицу "Б"
В поле какой записи? И если правило токое однозначное, то в таблице Б вообще не место этому полю. Надо просто правильно спроектировать структуру таблиц