Рассмотрим две таблицы A
и B
, которые выглядят следующим образом (извиняюсь за уродливые ASCII-таблицы):
---------------------------------- ------------------------
| SNID | PNID | SerialNumber | | PNID | PartNumber |
|--------|--------|--------------| |--------|-------------|
| 0 | 0 | 17823 | | 0 | 9874-4362 |
|--------|--------|--------------| |--------|-------------|
| 1 | 0 | 17824 | | 1 | 1053-1409 |
|--------|--------|--------------| ------------------------
| 2 | 1 | 97245 |
----------------------------------
Я хочу, чтобы это было возможно для серверов на местеα, чтобы иметь возможность иметь определенные права на PNID 0
, и серверы в местоположении β, чтобы иметь определенные права доступа на PNID 1
, но, поскольку это один и тот же тип данных (только разные владельцы), я не думаю, что данные должнысамо по себе должно быть разделено.
В любом случае я хочу убедиться, что если β хочет получить доступ, назначьте серийный номер для PNID 0
, что он должен сначала связаться с α, прежде чем ему будет разрешено это сделать.,Это будет означать, что если сеть между ними выйдет из строя, то α может произвести PNID 0
, но не PNID 1
, а β может произвести PNID 1
, но не PNID 0
.Однако, когда эти две сущности вернулись в связь друг с другом, любые серийные номера, созданные α для PNID 0
, будут реплицированы в β, а серийные номера из β относительно PNID 1
будут объединены в базу данных α.
В целом, я бы действительно предпочел, чтобы это было установлено с местоположением «посредника», Ω, которое принимало все решения относительно того, смог ли α добавить новый серийный номер без разрешения β.
В настоящее время я использую SQL Server Express (2008 r2) вместе с Visual Basic .NET Express (2010) для реализации сервера, но я открыт для любых других опций, которые могут позволить мне решить проблемы, с которыми я сталкиваюсь в настоящее время.Честно говоря, я не уверен, что то, что я спрашиваю, правдоподобно, но если бы это было так, я бы очень заинтересовался его реализацией.
Почти сразу, первое, что я могу подуматьof добавляет еще один столбец в таблицу B
, которая представляет местоположение, но я не думаю, что это «правильный» способ сделать это.Особенно о связи с другими серверами (и, честно говоря, я даже не знаю, смогу ли я сделать это с базой данных, так что , вероятно, должно быть сделанов .NET, я думаю.