Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-49556
Prospector
2004-01-06 08:58
2004.01.16
StatusLine


3-49395
Wadim
2003-12-19 22:17
2004.01.16
TreeView & БД


1-49639
axx
2004-01-04 14:28
2004.01.16
Помогите с востановлением строки из Array of byte


3-49385
Rafe
2003-12-21 21:39
2004.01.16
Простой метод просчета сумм значений выделенных строк


7-49784
DimaK
2003-10-12 19:39
2004.01.16
MessageBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский