Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2014, 12:17   #1
HelloExp
Пользователь
 
Регистрация: 06.03.2013
Сообщений: 12
По умолчанию sql запросы

Доброго времени суток. Мне посоветовали написать запросы " на обновление с учетом как ключевых полей, так и внешних ссылок. И в нужной последовательности", но я не понимаю как создать такие запросы. Нужна ваша помощь. Вот ссылочка на мою тему в разделе Delphi http://www.programmersforum.ru/showthread.php?t=255933
HelloExp вне форума Ответить с цитированием
Старый 28.02.2014, 14:20   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

1. удалить все связи в новой БД

2. перенести все данные и запомнив все(!) старые ключи
удобно для этого в каждой таблице предусмотреть еще по одному полю.
Код:
insert into t (oldkey, <остальные поля, кроме ключа> )
select ключ, <остальные поля в том же порядке> ...
3. изменить в каждой таблице все ссылки со старого ключа (мы же его помним(см. п.2)) на новый.
Код:
update t set fk =( select k from x where oldkey=fk )
4. восстановить все связи из п.1.

Связи можно не удалять, но тогда для всех ссылок так же предусмотреть доп. поле и
2.1. при переносе
Код:
insert into t (.... , rfk<резервное поле ссылки>, ... )
select ...., fk<ссылка>, ....
3.1.для восстановления использовать старое
Код:
update t set fk = ( select k from x where oldkey =rfk )
после того как данные успешно перенесены "лишние" поля можно убрать.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 28.02.2014, 19:02   #3
HelloExp
Пользователь
 
Регистрация: 06.03.2013
Сообщений: 12
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
1. удалить все связи в новой БД

2. перенести все данные и запомнив все(!) старые ключи
удобно для этого в каждой таблице предусмотреть еще по одному полю.
Код:
insert into t (oldkey, <остальные поля, кроме ключа> )
select ключ, <остальные поля в том же порядке> ...
3. изменить в каждой таблице все ссылки со старого ключа (мы же его помним(см. п.2)) на новый.
Код:
update t set fk =( select k from x where oldkey=fk )
4. восстановить все связи из п.1.

Связи можно не удалять, но тогда для всех ссылок так же предусмотреть доп. поле и
2.1. при переносе
Код:
insert into t (.... , rfk<резервное поле ссылки>, ... )
select ...., fk<ссылка>, ....
3.1.для восстановления использовать старое
Код:
update t set fk = ( select k from x where oldkey =rfk )
после того как данные успешно перенесены "лишние" поля можно убрать.
Т.е
1)мне нужно создать чистую базу, с такими же таблицами как и в заполненной бд, без ключевых полей, без связей и т.д?
2)потом уже к заполненной бд делать запросы?

Последний раз редактировалось HelloExp; 28.02.2014 в 19:05.
HelloExp вне форума Ответить с цитированием
Старый 28.02.2014, 19:47   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Структуру обеих БД (реляционную диаграмму или,хотя бы, ER-модель) в студию.
Streletz вне форума Ответить с цитированием
Старый 28.02.2014, 22:42   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

первый путь
копия по полям, включая ключевые, но без указания зависимостей + доп. поля для ключей.

старые ключи заносятся в доп. поля!
потом по старым ключам устанавливаются правильные значения (update ...)
потом настраиваем зависимости (связи).

второй путь.
полная копия структуры + доп. поля для ключей + доп. поля для ссылок.
старые ключи и старые ссылки заносятся в доп. поля
по старым ключам и старым ссылкам устанавливаем новые ссылки.
Цитата:
Структуру обеих БД (реляционную диаграмму или,хотя бы, ER-модель) в студию.
сие есть (сами БД) в теме по ссылке в пост #1.
БД1-данные = БД2
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 03.03.2014, 09:34   #6
HelloExp
Пользователь
 
Регистрация: 06.03.2013
Сообщений: 12
По умолчанию

Можно сказать получилось, только одна таблица ругается. =(
HelloExp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запросы SQL roxy7 Microsoft Office Access 1 16.05.2012 11:44
запросы SQL !!! Jenx666 SQL, базы данных 1 22.05.2011 15:18
SQL запросы Frosts Помощь студентам 2 18.05.2011 11:24
sql запросы wolf950 БД в Delphi 2 28.11.2008 21:26