автономное приложение клиент-сервер

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

в онлайн-приложении вы можете справиться с этим так просто, но это в автономном режиме. теперь они вводят свои персональные данные в свое приложение (у каждого пользователя разные ПК).

теперь вы знаете, что большая проблема заключается в слиянии дочерних БД с их родительской БД. Ch3 и Ch4 отправляют свои БД в Ch1 и то же самое для Ch5, Ch2, затем Ch1 и Ch2 в родительский. Например, у нас есть конфликт при слиянии один человек из ch1 перешел в ch3, данные дублируются, или если у родителя есть все данные, один ребенок меняет национальный код одного человека (уникальный ключ), то при слиянии мы не можем обновить существующие, а затем возникает конфликт при слиянии и множество проблем, которые вы знаете.

Есть идеи по объединению БД!?

введите здесь описание изображения


Немного о моей базе данных. ПерсоналИнформация - это основная таблица, в которой есть связанная таблица с именем PersonnelFactory, в которой каждая строка имеет одну фабрику сотрудников и вводит дату и дату выхода, а также код персонала. таблица ранга (должности) человека на этой фабрике. это небольшая часть БД для понимания проблем.


person Mamad R    schedule 03.08.2013    source источник
comment
Похоже, единственная проблема в том, что у вас нет стратегии слияния? Как вы хотите обрабатывать дубликаты? Я бы использовал GUID в качестве ключей, чтобы избежать дублирования ключей.   -  person m0s    schedule 03.08.2013
comment
Кажется, вы сказали правду, но в большой базе данных с большим количеством связанных дубликатов таблиц обновленные и удаленные строки являются проблемой, а отношения усложняют ситуацию. вопрос: есть ли какой-либо способ DLL, программа и т. д., чтобы помочь мне, или я должен сделать это сам с кодом С#. и я прочитал syncframework, кажется, он не может мне помочь.   -  person Mamad R    schedule 03.08.2013


Ответы (1)


Что вы можете сделать, так это создать центральную базу данных на стороне сервера. На стороне клиента клиенты будут вносить изменения локально, и всякий раз, когда доступен Интернет, они могут загружать свои изменения и загружать изменения, сделанные другими, через эту центральную базу данных сервера.

Взгляните на Microsoft Sync Framework. Он автоматически работает со многими сложными сценариями слияния. Существует множество решений, позволяющих избежать дублирования ключей на клиенте, одно из них — использовать GUID или uniqueidentifies.

Вот несколько полезных ресурсов

Введение в синхронизацию базы данных Sync Framework

Учебное пособие. Синхронизация SQL Server и SQL Express

person Haris Hasan    schedule 03.08.2013
comment
Я думаю, что синхронизация предназначена для 1 сервера и 1 клиента, а не для многих клиентов в древовидном представлении, таких как сервер-клиент. Я прочитал эту ссылку, она не может обрабатывать много клиентов. - person Mamad R; 03.08.2013
comment
@MamadR Нет, он поддерживает все виды сценариев, включая один сервер и множество клиентов. - person Haris Hasan; 03.08.2013
comment
хм, не могли бы вы показать мне ссылку или учебник, который может показать мне, как я могу сделать это для многих клиентов (в автономном режиме), и помочь в древовидной структуре, такой как стратегия сервер-клиент. и вы знаете, что в большой базе данных со связанной таблицей его комплекс может синхронизировать это? - person Mamad R; 03.08.2013