SQL ERD вопрос новичка - PullRequest
       10

SQL ERD вопрос новичка

1 голос
/ 11 января 2010

Если у меня есть erd хранилища данных - который имеет отношения и т.д.

Как я узнаю, какой тип соединения использовать: внутренний, внешний левый, внешний правый, полный внешний ,,

наверняка, если база данных была создана правильно, все они будут внутренними объединениями? проблемы качества данных бара

Ответы [ 3 ]

3 голосов
/ 11 января 2010

Каждый тип объединения выполняет что-то свое, поэтому все зависит от цели отдельного запроса.

Пример, когда вы не захотите использовать INNER JOIN, - это если у вас есть таблица User, содержащая список всех пользователей вашего приложения, и таблица входа в систему, которая регистрируется при каждом входе в систему. Если вы хотите найти всех пользователей, которые не вошли в систему, одним из способов будет использование OUTER JOIN. Это не означает, что у вас неправильная база данных или проблемы с качеством данных вообще.

0 голосов
/ 11 января 2010

Вам, вероятно, все еще нужно будет использовать внешние связи между фактами.

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

EDIT

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

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

Иногда атрибут измерения может быть логически нулевым. Это не обязательно хранится как ноль, и на моем рабочем месте мы используем 0 для представления нулевых измерений. На данный момент в голову приходит поле «Метод подтверждения смерти» (например, просмотренное свидетельство о смерти), которое имеется в нашей таблице измерений клиента. Конечно, большинство наших клиентов не мертвы, поэтому мы заполняем это поле 0. Наша таблица измерений метода проверки смерти, тем не менее, хранит только реальные методы проверки смерти, поэтому она не имеет записи с 0 (не применимо) и поэтому мы вынуждены использовать левые соединения к нему.

0 голосов
/ 11 января 2010

Нет, они не будут всеми ВНУТРЕННИМИ СОЕДИНЕНИЯМИ.

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

...