Вопрос

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

Есть ли у кого-нибудь какая-либо информация или хорошие исходные данные / примеры / примеры, чтобы помочь мне с этим справиться?

Помощь с благодарностью.

С уважением,

Это было полезно?

Решение

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

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

Другие советы

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

Я думаю, что если вы будете искать по терминам "нормализация" и «денормализация»; вы получите лучшие результаты.

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

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

Интересный комментарий о безопасности базы данных, когда данные вводятся через внешние источники, такие как сценарии базы данных.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top