Дизайн SQL вокруг отсутствия ссылок внешнего ключа перекрестной базы данных

Как упомянуто в комментариях, которые вы ищете включает в себя :

const lis = ["", "5", "2", "", "2", ""];

const not_dupl = [], dupl = [];

for(const i of lis) {
  console.log(i);
  if(!not_dupl.includes(i) || i === '')
    not_dupl.push(i);
  else
    dupl.push(i);
}

console.log(not_dupl, dupl);

PS: i является плохим именем для неиндекса, также почему lis и не просто list, почему not_dupl вместо nonDuplicates?

21
задан brmore 5 November 2008 в 18:10
поделиться

8 ответов

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

4
ответ дан 29 November 2019 в 22:04
поделиться

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

4
ответ дан 29 November 2019 в 22:04
поделиться

У нас есть такой модульный принцип в наших продуктах, но наши требования базы данных объединяются вместе во время installtion. Например, наш администраторский пакет и продукт A могут быть начальной покупкой клиентом, где они устанавливают эти два модуля в базу данных X. Если они позже покупают продукт B, компонент базы данных разделен на уровни прямо сверху базы данных X добавлений в DRI в случае необходимости.

единственный случай, где я видел потребность в отдельных базах данных с точки зрения дизайна, - при проведении жесткой линии между подразделениями (такими как корпорация), в которой точке проблемой является действительно тип разделения. Динамика Великих равнин делает это, где у них есть единственная административная база данных и несколько баз данных корпорации. Однако каждый модуль в GP для данной корпорации находится в той единой базе данных.

, Конечно, если бы Вы застреваете с отдельными базами данных, я согласился бы, что D является наилучшим вариантом.

3
ответ дан 29 November 2019 в 22:04
поделиться

В зависимости от Вашей реализации базы данных часто Вы будете в состоянии связать таблицы от другой базы данных (AdminDB) и сделать, чтобы они появились в Ваших различных базах данных модуля.

В Microsoft Access можно связать таблицы путем щелчка правой кнопкой и затем выбора источника данных ODBC. В Oracle они называют это ссылкой базы данных . Я готов держать пари , SQLServer имеет некоторую форму этой реализации за исключением реализации пользовательской репликации на единственной таблице.

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

А вторая опция может быть еще более простой. Что, если Вы использовали ту же схему для всех модулей и администраторской базы данных? Вы знаете, что администраторская база данных присутствует, таким образом, просто выполняет сценарий создания таблицы против той схемы. Пока нет никакой таблицы / представление / конфликты имен хранимой процедуры, тогда оно должно все работать только путем изменения dblogin во всех модулях для соответствия.

1
ответ дан 29 November 2019 в 22:04
поделиться

Необходимо реализовать Сервис-ориентированную архитектуру. Куда различные услуги в системе работают с их на схеме базы данных. Тогда позвольте Вам приложения, запущенные независимо от любых баз данных, но позвольте им работать против сервисов.

1
ответ дан 29 November 2019 в 22:04
поделиться

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

, Если Вы говорите, "Ну и дела, существует много работы, которая могла все еще быть сделана без администраторского дб". тогда я спросил бы, почему Вы полагаете, что репликация uni-направления так дико экзотична, что это - ясный залог провала?

Создание копии таблицы не является аэрокосмическими исследованиями вообще. На самом деле это крайне столь же простой как дублирование Ваших ключей от дома. Каждый пик и долина в ведущем устройстве, передается к отрезному кругу, который формирует пробел. То, где существует некоторое волшебство, находится в мультиосновной репликации, если Вы начинаете позволять изменения в удаленных базах данных к данным, которые прибывают из администраторских данных, тогда Вы открыли серьезное конструктивное соображение.

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

1
ответ дан 29 November 2019 в 22:04
поделиться

Можно обратиться к этому различными способами архитектурно для направления всех изменений через центральный сервис так, чтобы они не могли сделать несоответствия, но независимо от того, сколько усилий Вы готовы приложить к тому (и создание узкого места, или единая точка отказа может нарушить некоторые другие требования, которые Вы имеете), Вы не сможете полагаться на сам механизм базы данных для осуществления его с гарантией как Вы, может с ограничением FK.

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

В этих случаях я обычно полагаюсь на отчеты об исключении, сгенерированные каждый час, которые проверяют состояние вещей и только сообщают, существует ли проблема. Задания SQL Server Agent имеют мощные возможности планирования. Я всегда использовал таблицы журнала и SQLAnswersMail для генерации миленьких электронных писем HTML (где URL-адреса в электронных письмах могли даже взять Вас к страницам администрирования для исправления проблем) различным системным администраторам, но существуют тонны способов освежевать эту кошку.

1
ответ дан 29 November 2019 в 22:04
поделиться

Интересно, имеет ли SQL Server функцию как осуществленные представления Oracle? Это - объект, который Вы определяете с запросом как представление, но результаты запроса хранятся как таблица. Существуют тогда различные механизмы для того, чтобы автоматически обновиться.

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

0
ответ дан 29 November 2019 в 22:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: