|
|
|
Сохранение ссылочной целостности. при слиянии баз
|
|||
|---|---|---|---|
|
#18+
Имеется база с двумя таблицами: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 10:53:59 |
|
||
|
Сохранение ссылочной целостности. при слиянии баз
|
|||
|---|---|---|---|
|
#18+
добавь столбец со старым значением ключа и после загрузки обнови ссылку в таблице заслуг на новое значение ключа потом дополнительное поле удали ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 11:06:47 |
|
||
|
Сохранение ссылочной целостности. при слиянии баз
|
|||
|---|---|---|---|
|
#18+
vizioдобавь столбец со старым значением ключа и после загрузки обнови ссылку в таблице заслуг на новое значение ключа потом дополнительное поле удали т.е. в таблицу сотрудников добавить дополнительное поле в которое будет вносится старое значение id_sotrudnika, а затем к таблице заслуг сформировать запрос на изменение поля id_sotrudnika по вновь сформированому id? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 11:16:56 |
|
||
|
Сохранение ссылочной целостности. при слиянии баз
|
|||
|---|---|---|---|
|
#18+
да обновление ссылки лучше делать в том же запросе, что и добавление заслуг в 1ю базу из 2й или если сначала копируешь заслуги, а потом обновляешь, то как-то пометь заслуги из 2й базы, а то и старые обновятся понятно написано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 11:27:19 |
|
||
|
Сохранение ссылочной целостности. при слиянии баз
|
|||
|---|---|---|---|
|
#18+
vizioда обновление ссылки лучше делать в том же запросе, что и добавление заслуг в 1ю базу из 2й или если сначала копируешь заслуги, а потом обновляешь, то как-то пометь заслуги из 2й базы, а то и старые обновятся понятно написано? Да, благодарю. Сначала буду сливать таблицы с фамилиями, затем обновлю поля во второй базе у таблиц с заслугами, а уж потом солью таблицы с заслугами. Единственная неприятность во всем этом деле состоит в том, что таблица с фамилиями в реальности содержит 106 полей , таблиц вроде тех, что с заслугами в реале аж 32 Запросик получится малость нескромный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 11:58:20 |
|
||
|
Сохранение ссылочной целостности. при слиянии баз
|
|||
|---|---|---|---|
|
#18+
32 таблицы содержат похожие или совершенно разные данные ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 12:42:05 |
|
||
|
Сохранение ссылочной целостности. при слиянии баз
|
|||
|---|---|---|---|
|
#18+
Программист-Любитель32 таблицы содержат похожие или совершенно разные данные ? Таблицы абсолютно одинаковой структуры, но с разными данными внутри. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 13:45:43 |
|
||
|
Сохранение ссылочной целостности. при слиянии баз
|
|||
|---|---|---|---|
|
#18+
Млин! Я так и боялся. Даешь каждому ForeignKey по персональной таблице! Долой связь один-ко-многим! Ура!!! Осталось допытаться, что за сотня с гаком полей в таблице сотрудников. Думаю, не менее изящное решение. Типа "зарплата за январь", "зарплата за февраль", ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 14:51:34 |
|
||
|
Сохранение ссылочной целостности. при слиянии баз
|
|||
|---|---|---|---|
|
#18+
Yura_s Программист-Любитель32 таблицы содержат похожие или совершенно разные данные ? Таблицы абсолютно одинаковой структуры, но с разными данными внутри. надеюсь, имеется в виду, что 32 таблицы в одну сливаются )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 15:28:32 |
|
||
|
Сохранение ссылочной целостности. при слиянии баз
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительМлин! Я так и боялся. Даешь каждому ForeignKey по персональной таблице! Долой связь один-ко-многим! Ура!!! Осталось допытаться, что за сотня с гаком полей в таблице сотрудников. Думаю, не менее изящное решение. Типа "зарплата за январь", "зарплата за февраль", ... нет, это программа для вуза, и в главной таблице - список преподавателей с их "параметрами": должности, кафедры, деканаты, участие этих препододов в различных видах работ, научные звания и т.п. Всего около сотни параметров. А в остальных таблицах - справочники к этим "параметрам". А вот со связью - это правда. В таблицах-справочниках, которые будут подливаться в основную базу прийдется попробовать обойтись без связей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 15:43:55 |
|
||
|
Сохранение ссылочной целостности. при слиянии баз
|
|||
|---|---|---|---|
|
#18+
vizio Yura_s Программист-Любитель32 таблицы содержат похожие или совершенно разные данные ? Таблицы абсолютно одинаковой структуры, но с разными данными внутри. надеюсь, имеется в виду, что 32 таблицы в одну сливаются )) Нет, не в одну. 32 - это таблицы-справочники, которые по мере поступления новых справочных параметров обновляются. Я прекрасно понимаю, что такую "прелесть" нужно делать клиент-сервером на оракле или интербейсе, и писать нормального клиента на делфях или на Си, но ситуация такова, что там, где будет набираться эта база нет сети и некуда воткнуть какой-нибудь сервер БД... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 15:48:21 |
|
||
|
Сохранение ссылочной целостности. при слиянии баз
|
|||
|---|---|---|---|
|
#18+
>> участие этих препододов в различных видах работ, научные звания То есть из 100 с лишним полей 32 имеют какие-либо справочники ? А если внима-а-а-ательно проанализировать структуру таблицы, наверняка можно выделить еще какие-то группы столбцов для отделения в таблицы, возможно более чем одноуровневые. Сделать разделение на back-end mdb с данными и front-end с интерфейсом никак невозможно по условиям ТЗ ? Сразу головная боль ушла бы... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 16:48:52 |
|
||
|
Сохранение ссылочной целостности. при слиянии баз
|
|||
|---|---|---|---|
|
#18+
Программист-Любитель>> участие этих препододов в различных видах работ, научные звания То есть из 100 с лишним полей 32 имеют какие-либо справочники ? А если внима-а-а-ательно проанализировать структуру таблицы, наверняка можно выделить еще какие-то группы столбцов для отделения в таблицы, возможно более чем одноуровневые. Сделать разделение на back-end mdb с данными и front-end с интерфейсом никак невозможно по условиям ТЗ ? Сразу головная боль ушла бы... Да, именно 32. Допустим, написал препод книжку - описание книжки заносится в соответствующий справочник, сделал учебную программу по предмету - тоже в отдельном справочник. Но есть очень много полей крторые не нуждаются в справочниках, просто в это поле ставится соответствующая табелю о рагах рейтинговая оценка (доктор наук - столько-то, кандидат, столько-то). И таких полей довольно много. Плюс поля с паспортными данными и данными о месте работы, должности и т.п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 16:59:44 |
|
||
|
Сохранение ссылочной целостности. при слиянии баз
|
|||
|---|---|---|---|
|
#18+
А если 2 преподавателя в соавторстве напишут книжку ? А если 3 ? А если нужно хранить данные паспорта И загранпаспорта (ов) ? А предыдущее (ие) места работы ? В рамках 1 мегатаблицы со справочниками это нереализуемо... Я бы еще разделил на таблички... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2005, 22:20:30 |
|
||
|
|

start [/forum/topic.php?fid=45&msg=32886992&tid=1668997]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
40ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 293ms |

| 0 / 0 |
