Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Нужен совет Авторитетов - програмное заполение ключевого поля для распределенной базы
 
 автор: Vik   (18.04.2007 в 12:00)   личное сообщение
 
 

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

Планируется эту базу распосттринить в подразделения, не связанные сетью.

С целью анализа данные подразделений данные изредка (оценочно один раз в полгода-год) будут обьединяться в одну базу.

Для предупреждения конфликтов по ключевому полю планирую програмно генерировать значение этого поля по принципу максимальное значение этого поля в таблице +1, при этом само ключевое поле должно иметь префикс с кодом подразделения (4 цифры).

Например, для подразделения с кодом 4801 счетчик будет заполняться начиная с 48010000001 и т.д. - необходимо кол-во записей в каждом подразделении >10 млн

Вопросиы в следующем:

1. Какой тип данных задать для ключевого поля, и будет-ли нормально работать Double, Long Integer маловат.

2. Какие риски такого механизма.

К репликации душа не лежит.

Заранее благодарен за комментарии.

  Ответить  
 
 автор: Serge Gavrilov   (18.04.2007 в 12:18)   личное сообщение
 
 

Видимо, Double должно работать, как мимнимум 14(?) значащих цифр.
Можно и о String подумать.

  Ответить  
 
 автор: osmor   (18.04.2007 в 12:19)   личное сообщение
 
 

Для подобной задачи применял следующее решение
в филиалах есть поле счетчик как индентификатор записи

при экпорте во все таблицы добавляется поле с кодом филиала (для всех строк одинаковое значение) оно зашито в настроечной таблице

в главной базе (куда сливаются данные из всех баз) ключем являются 2 поля
Id - тот который счетчик в филиале
код филиала

все связи в сводной БД по 2-м этим полям

Ваше решение мне кажется менее универсальным и наглядным.

  Ответить  
 
 автор: Vik   (18.04.2007 в 18:44)   личное сообщение
 
 

2 Serge Gavrilov & osmor

Большое спасибо за советы.

Думал над вариантом двух полей - хорошее решение для одной таблицы, в то-же время остерегаюсь проблем со связанными 2-я связями таблицами.

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

На данное время склоняюсь к варианту "самодельного счетчика" с Double, при этом новое значение будет расчитываться и вставляться по событию "BeforeInsert" формы либо через SQL вместе с остальными полями.

Относительно String - здесь 2 аспекта - сложность и надежность расчета нового значение ключевого поля (для Double - Max+1), а также скорость выборки (работы подчиненных форм) по String -ключу.

Мои познания недостаточны для однозначного ответа по этим аспектим.

  Ответить  
 
 автор: osmor   (18.04.2007 в 20:57)   личное сообщение
 
 

Также в главной базе неодходимо будет по-другому обрабатывать добавление записей - вместо счетчиков будет длинное целое.
Не-е-е в ней тоже будет счетчик, а его значение будет дублироваться в поле длинное целое
У меня было так что основная база использовалась только для анализа, в нее данные не добавлялись.
Связь была и по 5-ти полям (досталось в наследство), и ничего работало ...

  Ответить  
 
 автор: Vik   (19.04.2007 в 09:56)   личное сообщение
 
 

Спасибо за комментарий.

Связь по 5-и полям - это серьёзно

  Ответить  
 
 автор: час   (24.04.2007 в 08:40)   личное сообщение
 
 

А вот есть такое поле, со значением GUID- этот гуид никода не повториться.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList