Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сохранение ссылочной целостности. при слиянии баз / 14 сообщений из 14, страница 1 из 1
27.01.2005, 10:53:59
    #32886378
Yura_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылочной целостности. при слиянии баз
Имеется база с двумя таблицами:
1-я - таблица сотрудников:

id_sotrudnika | FIO
1 | Иванов
2 | Петров


2-я - таблица заслуг сотрудников:

Id_zaslugi | Zasluga | id_sotrudnika
1 | Medal | 1
2 | Orden | 2
3 | Gramota | 1


Т.е. у Иванова есть медаль и грамота, а у Петрова - орден.

Тепрь нужно слить эту базу с точно такой же по структуре, в которой есть такие же таблицы с такой же структурой, но другими данными:

id_sotrudnika | FIO
1 | Гаврилов
2 | Андреев


Id_zaslugi | Zasluga | id_sotrudnika
1 | Premiya | 1
2 | blagodarnost | 2


Т.е. у Гаврилова есть премия, а у Андреева - благодарность.
При слиянии в первую базу записи 1-Гаврилов и 2-Андреев соответственно получают порядковые номера 3 и 4 по первичному автоинкрементному ключу в первой таблице первой базы. А как сделать так, чтобы при присоединении второй таблицы с описанием заслуг значение поля id_sotrudnika менялось в зависимости от изменения прядкового номера вставленной записи? Т.е., запиь
1 | Premiya | 1
из второй таблицы второй базы должна выглядеть во второй таблице первой базы как
1 | Premiya | 3
...
Рейтинг: 0 / 0
27.01.2005, 11:06:47
    #32886430
vizio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылочной целостности. при слиянии баз
добавь столбец со старым значением ключа и после загрузки обнови ссылку в таблице заслуг на новое значение ключа
потом дополнительное поле удали
...
Рейтинг: 0 / 0
27.01.2005, 11:16:56
    #32886474
Yura_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылочной целостности. при слиянии баз
vizioдобавь столбец со старым значением ключа и после загрузки обнови ссылку в таблице заслуг на новое значение ключа
потом дополнительное поле удали
т.е. в таблицу сотрудников добавить дополнительное поле в которое будет вносится старое значение id_sotrudnika, а затем к таблице заслуг сформировать запрос на изменение поля id_sotrudnika по вновь сформированому id?
...
Рейтинг: 0 / 0
27.01.2005, 11:27:19
    #32886523
vizio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылочной целостности. при слиянии баз
да
обновление ссылки лучше делать в том же запросе, что и добавление заслуг в 1ю базу из 2й
или если сначала копируешь заслуги, а потом обновляешь, то как-то пометь заслуги из 2й базы, а то и старые обновятся
понятно написано?
...
Рейтинг: 0 / 0
27.01.2005, 11:58:20
    #32886630
Yura_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылочной целостности. при слиянии баз
vizioда
обновление ссылки лучше делать в том же запросе, что и добавление заслуг в 1ю базу из 2й
или если сначала копируешь заслуги, а потом обновляешь, то как-то пометь заслуги из 2й базы, а то и старые обновятся
понятно написано?

Да, благодарю. Сначала буду сливать таблицы с фамилиями, затем обновлю поля во второй базе у таблиц с заслугами, а уж потом солью таблицы с заслугами.
Единственная неприятность во всем этом деле состоит в том, что таблица с фамилиями в реальности содержит 106 полей , таблиц вроде тех, что с заслугами в реале аж 32 Запросик получится малость нескромный
...
Рейтинг: 0 / 0
27.01.2005, 12:42:05
    #32886746
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылочной целостности. при слиянии баз
32 таблицы содержат похожие или совершенно разные данные ?
...
Рейтинг: 0 / 0
27.01.2005, 13:45:43
    #32886992
Yura_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылочной целостности. при слиянии баз
Программист-Любитель32 таблицы содержат похожие или совершенно разные данные ?
Таблицы абсолютно одинаковой структуры, но с разными данными внутри.
...
Рейтинг: 0 / 0
27.01.2005, 14:51:34
    #32887235
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылочной целостности. при слиянии баз
Млин! Я так и боялся. Даешь каждому ForeignKey по персональной таблице! Долой связь один-ко-многим! Ура!!!

Осталось допытаться, что за сотня с гаком полей в таблице сотрудников. Думаю, не менее изящное решение. Типа "зарплата за январь", "зарплата за февраль", ...
...
Рейтинг: 0 / 0
27.01.2005, 15:28:32
    #32887361
vizio
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылочной целостности. при слиянии баз
Yura_s Программист-Любитель32 таблицы содержат похожие или совершенно разные данные ?
Таблицы абсолютно одинаковой структуры, но с разными данными внутри.
надеюсь, имеется в виду, что 32 таблицы в одну сливаются ))
...
Рейтинг: 0 / 0
27.01.2005, 15:43:55
    #32887420
Yura_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылочной целостности. при слиянии баз
Программист-ЛюбительМлин! Я так и боялся. Даешь каждому ForeignKey по персональной таблице! Долой связь один-ко-многим! Ура!!!

Осталось допытаться, что за сотня с гаком полей в таблице сотрудников. Думаю, не менее изящное решение. Типа "зарплата за январь", "зарплата за февраль", ...
нет, это программа для вуза, и в главной таблице - список преподавателей с их "параметрами": должности, кафедры, деканаты, участие этих препододов в различных видах работ, научные звания и т.п. Всего около сотни параметров. А в остальных таблицах - справочники к этим "параметрам". А вот со связью - это правда. В таблицах-справочниках, которые будут подливаться в основную базу прийдется попробовать обойтись без связей...
...
Рейтинг: 0 / 0
27.01.2005, 15:48:21
    #32887437
Yura_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылочной целостности. при слиянии баз
vizio Yura_s Программист-Любитель32 таблицы содержат похожие или совершенно разные данные ?
Таблицы абсолютно одинаковой структуры, но с разными данными внутри.
надеюсь, имеется в виду, что 32 таблицы в одну сливаются ))
Нет, не в одну. 32 - это таблицы-справочники, которые по мере поступления новых справочных параметров обновляются.
Я прекрасно понимаю, что такую "прелесть" нужно делать клиент-сервером на оракле или интербейсе, и писать нормального клиента на делфях или на Си, но ситуация такова, что там, где будет набираться эта база нет сети и некуда воткнуть какой-нибудь сервер БД...
...
Рейтинг: 0 / 0
27.01.2005, 16:48:52
    #32887605
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылочной целостности. при слиянии баз
>> участие этих препододов в различных видах работ, научные звания

То есть из 100 с лишним полей 32 имеют какие-либо справочники ? А если внима-а-а-ательно проанализировать структуру таблицы, наверняка можно выделить еще какие-то группы столбцов для отделения в таблицы, возможно более чем одноуровневые.

Сделать разделение на back-end mdb с данными и front-end с интерфейсом никак невозможно по условиям ТЗ ? Сразу головная боль ушла бы...
...
Рейтинг: 0 / 0
27.01.2005, 16:59:44
    #32887636
Yura_s
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылочной целостности. при слиянии баз
Программист-Любитель>> участие этих препододов в различных видах работ, научные звания

То есть из 100 с лишним полей 32 имеют какие-либо справочники ? А если внима-а-а-ательно проанализировать структуру таблицы, наверняка можно выделить еще какие-то группы столбцов для отделения в таблицы, возможно более чем одноуровневые.

Сделать разделение на back-end mdb с данными и front-end с интерфейсом никак невозможно по условиям ТЗ ? Сразу головная боль ушла бы...

Да, именно 32. Допустим, написал препод книжку - описание книжки заносится в соответствующий справочник, сделал учебную программу по предмету - тоже в отдельном справочник. Но есть очень много полей крторые не нуждаются в справочниках, просто в это поле ставится соответствующая табелю о рагах рейтинговая оценка (доктор наук - столько-то, кандидат, столько-то). И таких полей довольно много. Плюс поля с паспортными данными и данными о месте работы, должности и т.п.
...
Рейтинг: 0 / 0
27.01.2005, 22:20:30
    #32888169
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сохранение ссылочной целостности. при слиянии баз
А если 2 преподавателя в соавторстве напишут книжку ? А если 3 ?

А если нужно хранить данные паспорта И загранпаспорта (ов) ?

А предыдущее (ие) места работы ?

В рамках 1 мегатаблицы со справочниками это нереализуемо...

Я бы еще разделил на таблички...
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сохранение ссылочной целостности. при слиянии баз / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]