5

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

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

Любые мысли?

Заранее спасибо.

+1

Взгляните на [** аналогичный вопрос/ответ **] (http://stackoverflow.com/questions/2819424/in-a-star-schema-are-foreign-key-constraints-between-facts и-размеры-necce/2822941 # 2822941). –

+1

Не уверен, что я должен добавить здесь или к аналогичному вопросу, но ... Если проблема целостности является проблемой, вы всегда можете исправить функции целостности или хранимые процедуры, которые ищут «осиротевшие» факты. (Строки, в которых внешние ключи не имеют смысла). Затем вы можете очистить их после/во время/до следующего цикла нагрузок в базе данных. – Markus

+0

/right/write .... –

ответ

1

О, я, безусловно, был бы! Что вы должны помнить, так это ваша база данных - это ваше хранилище данных, это не только хранилище данных для интерфейса. Это тонкая разница, но это важно, когда вы начинаете рассматривать будущее. Прямо сейчас вы (предположительно) владеете приложениями управления, но кто скажет, что в будущем это все равно будет?

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

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

Надеюсь, это поможет!

+0

@ aCiD2, ОП спрашивает о ** datawarehouse **. –

+0

@Mark, я это понимаю, но влияет ли это на моего anwser? – ocharles

+0

@ aCiD2, я не думаю, что ссылки на интерфейс имеют отношение к хранилищам данных - «исходные системы» были бы более актуальными. Существует также вопрос о том, должен ли процесс ETL обеспечивать ссылочную целостность - как правило, я ожидал бы этого, поэтому было бы необязательно применять его в схеме БД.Но тогда я обычно не ожидал бы использовать полностью нормализованную схему в качестве основы для хранилища данных. –

2

Во-первых, я бы не создал хранилище данных, которое (физически) соответствовало реляционной схеме. Является ли предлагаемый хранилище данных полностью нормализованным или слово «реляционная» в вопросе просто указывает, что оно будет построено в базе данных SQL?

+0

Будет нормализованный слой, который фиксирует все детали. После этого будет построен один или несколько слоев, в которых итоговые данные будут загружены для аналитики. – David

+0

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

+0

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

1

Да, я бы использовал внешние ключи. Это важно в любой базе данных, но, возможно, особенно, если склад является сложным со многими таблицами.

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