Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.16;
Скачать: CL | DM;

Вниз

Как немного автоматизировать базу   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.025 c
1-49629
rolex
2004-01-04 18:40
2004.01.16
Как в ListBox1 в каждую строчку записать имена файлов, из папки F


1-49593
Toots
2004-01-05 12:56
2004.01.16
параметр командной строки


1-49498
Igloo
2004-01-03 16:43
2004.01.16
На форме доступны тока курсоры виндоса, а как свои ставить из


1-49533
Timer
2004-01-02 13:07
2004.01.16
Delphi и Word


3-49456
Ломброзо
2003-12-18 00:00
2004.01.16
Дополнение строк пробелами в MIDAS