Слабосвязанный дизайн базы данных - как? - PullRequest
5 голосов
/ 14 сентября 2009

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

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

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

С уважением,

Ответы [ 4 ]

8 голосов
/ 14 сентября 2009

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

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

2 голосов
/ 14 сентября 2009

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

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

1 голос
/ 14 сентября 2009

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

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

0 голосов
/ 06 мая 2010

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

...