Почему в базах данных есть «отношения», а не просто соединение SQL? - PullRequest
3 голосов
/ 04 марта 2011

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

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

Ответы [ 6 ]

5 голосов
/ 04 марта 2011

Отношения - это не просто соединения для запросов SQL.Отношения предоставляют множество преимуществ:

  • Целостность данных
  • Удобство запросов
  • Преимущества интеграции с инструментами сторонних производителей
  • Модель данных с самоописанием для будущегоdbas / разработчики, работающие с базой данных
  • и т. д.

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

Удобство запросов: отношения могут упростить выполнение определенных типов запросов.Удаление записи клиента может автоматически удалять заказы клиента одновременно, благодаря взаимосвязи между клиентом и заказом

Преимущества интеграции сторонних инструментов Многие инструменты сторонних производителей (инструменты O / R приходят на ум) полагаются наотношения для правильной работы

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

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

4 голосов
/ 04 марта 2011

ОТНОШЕНИЕ - это подмножество декартового произведения набора доменов (http://mathworld.wolfram.com/Relation.html). В повседневных терминах отношение (или, более конкретно, переменная отношения ) - это структура данных, которую большинство людей называться таблицей (хотя таблицы в SQL не обязательно квалифицируются как отношения).

Отношения являются основой модели реляционной базы данных.

Отношения - это что-то другое. Отношения - это семантическая «ассоциация между вещами».

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

2 голосов
/ 04 марта 2011

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

Объединение, как вам кажется, является частью запроса select, который позволяет получать строки из более чем одной таблицы.

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

Вопрос "Зачем использовать отношения, когда можно использовать объединения?"для меня это звучит как вопрос: «Почему у переменных есть типы, когда я все равно могу их прочитать?».

2 голосов
/ 04 марта 2011

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

JOIN - это вид Отношения, могут быть разные виды отношений.Обратитесь к этой вики-странице , чтобы узнать больше о том, что такое отношение.

1 голос
/ 04 марта 2011

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

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

Без разработки структуры вашей базы данных вокруг сущностей и взаимосвязей между ними вы могли бы также использовать электронную таблицу или одну большую плоскую таблицу. ОТНОШЕНИЯ и НОРМАЛИЗАЦИЯ составляют основу современной реляционной базы данных.

0 голосов
/ 05 марта 2011

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

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

Неважно. Хороший специалист по компьютерам может довольно легко понимать таблицы SQL, а также распознавать и использовать возможности SQL JOIN. Это понимание будет делать вместо математического понимания отношений для многих целей. Таблица SQL материализует математическое отношение, приблизительно. Если вы осторожны с дизайном стола, вы можете превратить «примерно» в «точно».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...