Что означает термин «кортеж» в реляционных базах данных? - PullRequest
56 голосов
/ 15 апреля 2009

Пожалуйста, объясните, что подразумевается под кортежами в sql? Спасибо ..

Ответы [ 10 ]

77 голосов
/ 05 июля 2009

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

(x=1, y=2, z=3)
(z=3, y=2, x=1)
(y=2, z=3, x=1)

... при условии, конечно, что x, y и z являются целыми числами. Также обратите внимание, что не существует такого понятия, как «дубликат» кортежа. Таким образом, они не только равны, но и 1011 * одно и то же . Наконец, кортежи могут содержать только известные значения (т. Е. Ноль).

A строка ** - упорядоченный набор известных или неизвестных значений с именами (хотя они могут быть опущены). Поэтому следующие сравнения возвращают false в SQL:

(1, 2, 3) = (3, 2, 1)
(3, 1, 2) = (2, 1, 3)

Обратите внимание, что есть способы «подделать это». Например, рассмотрим этот оператор INSERT:

INSERT INTO point VALUES (1, 2, 3)

Предполагая, что x является первым, y является вторым, а z является третьим, этот запрос может быть переписан следующим образом:

INSERT INTO point (x, y, z) VALUES (1, 2, 3)

или это:

INSERT INTO point (y, z, x) VALUES (2, 3, 1)

... но все, что мы на самом деле делаем, это меняем порядок, а не удаляем его.

А также обратите внимание, что могут быть и неизвестные значения. Таким образом, у вас могут быть строки с неизвестными значениями:

(1, 2, NULL) = (1, 2, NULL)

... но учтите, что это сравнение всегда даст UNKNOWN. В конце концов, как узнать, равны ли два неизвестных значения?

И, наконец, строки могут дублироваться. Другими словами, (1, 2) и (1, 2) могут сравниваться, чтобы быть равными, но это не обязательно означает, что это одно и то же.

Если эта тема вас интересует, я настоятельно рекомендую прочитать SQL и реляционная теория: как написать точный код SQL от CJ Date.

* Обратите внимание, что я говорю о кортежах, которые существуют в реляционной модели, которая немного отличается от математики в целом.

** И на тот случай, если вам интересно, почти все в SQL - это строка или таблица. Следовательно, (1, 2) - это строка, а VALUES (1, 2) - таблица (с одной строкой).

ОБНОВЛЕНИЕ : я немного расширил этот ответ в сообщении в блоге здесь .

14 голосов
/ 15 апреля 2009

Это сокращенное "N-tuple" (как в quadruple, quintuple и т. Д.)

Это строка набора строк, взятая целиком.

Если вы выдаете:

SELECT  col1, col2
FROM    mytable

, весь результат будет ROWSET, а каждая пара col1, col2 будет tuple.

Некоторые базы данных могут работать с кортежем в целом.

Например, вы можете сделать это:

SELECT  col1, col2
FROM    mytable
WHERE   (col1, col2) =
        (
        SELECT  col3, col4
        FROM    othertable
        )

, который проверяет, что целое tuple из одного rowset соответствует целому tuple из другого rowset.

4 голосов
/ 15 апреля 2009

В реляционные базы данных , таблицы: отношения (в математическом смысле) . Отношения - это наборы кортежей. Таким образом, строка таблицы в реляционной базе данных является кортежем в отношении.

Вики по отношениям:

В математике (точнее, в теория множеств и логика), отношение свойство, которое присваивает значения истинности комбинации (k-кортежи) k физические лица. Как правило, собственность описывает возможное соединение между компонентами k-кортежа. Для данного набора k-кортежей истина значение присваивается каждому k-кортежу в зависимости от того, или не держит.

3 голосов
/ 20 января 2014

Независимо от его использования в математике, кортеж в RDBMS обычно считается строкой в ​​таблице или наборе результатов. В СУБД кортеж неупорядочен. Кортеж в MDDBMS - это экземпляр данных в ячейке со связанными с ней экземплярами измерения (членами).

Что такое кортеж в хранилище данных семейства столбцов?

2 голосов
/ 01 апреля 2013

кортеж = 1 запись; n-tuple = упорядоченный список 'n' записей; Книга Эльмасри Навате (стр. 198, 3-е издание).

запись = либо упорядочены, либо неупорядочены.

0 голосов
/ 22 сентября 2017

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

0 голосов
/ 09 сентября 2013

Насколько я понимаю, в таблице есть набор ключей K и типизирующая функция T с доменом K. Строка или «кортеж» таблицы - это функция r с доменом K, такая что r (k) является элемент T (k) для каждого ключа k. Таким образом, терминология вводит в заблуждение тем, что «кортеж» действительно больше похож на ассоциативный массив.

0 голосов
/ 24 февраля 2010

Кортежи - это известные значения, которые используются для связи таблицы в реляционной БД.

0 голосов
/ 15 апреля 2009

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

0 голосов
/ 15 апреля 2009

строка из таблицы базы данных

...