Почему таблица называется отношением в postgresql? - PullRequest
5 голосов
/ 10 января 2012

Исходя из опыта работы с MySQL, я некоторое время удивлялся, почему таблицу на самом деле называют отношением в postgresql. Связано ли это со стандартом SQL: 2008 ISO / ANSI? Потому что это чертовски смутило меня и коллег в первых нескольких встречах с postgres.

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

Ответы [ 4 ]

4 голосов
/ 10 января 2012

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

Формальный язык для баз данных называется «Реляционная алгебра».

Как отметил Марк Баннистер, эта ссылка может быть полезна для терминологии:

http://en.wikipedia.org/wiki/Relational_databases#Terminology

Редактировать

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

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

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

3 голосов
/ 10 января 2012

Имеет ли это отношение к стандарту SQL: 2008 ISO / ANSI?

Стандартные спецификации SQL всегда намеренно избегали термина "отношение" и его производных.

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

1 голос
/ 10 января 2012

Это просто способ назвать вещи.У некоторых людей есть таблицы со строками и столбцами, у других - отношения с кортежами и атрибутами.Это не специфично для postgresql, более того, использование этих других обозначений подразумевает определенный способ организации ваших таблиц, см. «Реляционная модель» в википедии.

0 голосов
/ 10 января 2012

«Отношение» фактически охватывает несколько различных типов объектов базы данных: таблицы, представления, последовательности и индексы - это все отношения. Вы можете сделать SELECT из любого, кроме индексов. Так что думайте о «отношении» как об «чем-то, из чего вы можете получить данные», а таблицы и представления являются экземплярами, которые работают совершенно по-другому.

В некоторой степени именно поэтому вы можете сказать «кортежи» и «атрибуты» вместо «строк» ​​и «столбцов»: строки и столбцы можно рассматривать как таблица составляющих, тогда как кортежи и Атрибуты - это более абстрактные понятия, которые также охватывают такие вещи, как функция или вывод запроса, которые на самом деле могут не соответствовать какой-либо реальной строке или столбцу. Но это так же сбивает с толку, как и попытка различить «байт» и «октет».

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

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