Пожалуйста, объясните, что подразумевается под кортежами в sql? Спасибо..
Что означает термин "кортеж" в реляционных базах данных?
Ответ 1
Большинство ответов здесь на правильном пути. Однако строка не является кортежем. Кортежи *
являются неупорядоченными наборами известных значений с именами. Таким образом, следующие кортежи - одно и то же (я использую синтаксис воображаемого кортежа, поскольку реляционный кортеж в значительной степени является теоретической конструкцией):
(x=1, y=2, z=3)
(z=3, y=2, x=1)
(y=2, z=3, x=1)
... предполагая, конечно, что x, y и z - целые числа. Также обратите внимание, что нет такой вещи, как "дублированный" кортеж. Таким образом, не только вышеперечисленные равны, они одно и то же. Наконец, кортежи могут содержать только известные значения (таким образом, никакие нули).
A row **
- это упорядоченное множество известных или неизвестных значений с именами (хотя они могут быть опущены). Поэтому следующие сравнения возвращают 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 и Relational Theory: как написать точный код SQL от CJ Дата.
*
Обратите внимание, что я говорю о кортежах, поскольку они существуют в реляционной модели, которая немного отличается от математики вообще.
**
И на всякий случай, когда вам интересно, почти все в SQL - это строка или таблица. Следовательно, (1, 2)
- это строка, а VALUES (1, 2)
- таблица (с одной строкой).
UPDATE. Я немного расширил этот ответ в сообщении в блоге здесь.
Ответ 2
Это сокращенный "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
.
Ответ 3
В реляционных базах данных таблицы отношения (в математическом смысле). Отношениями являются наборы кортежей. Таким образом, строка таблицы в реляционной базе данных связана с кортежем.
Wiki по отношениям:
В математике (точнее, в теории множеств и логики), отношение свойство, которое присваивает значения истинности комбинаций (k-кортежей) k физические лица. Как правило, свойство описывает возможное соединение между компонентами k-кортежа. Для данного набора k-кортежей, правда значение присваивается каждому k-кортежу в зависимости от того, или не выполняется.
Ответ 4
Каким бы ни было его использование в математике, кортеж в РСУБД обычно считается строкой в таблице или наборе результатов. В РСУБД кортеж неупорядочен. Кортеж в MDDBMS - это экземпляр данных в ячейке со связанными с ней экземплярами измерений (членами).
Что такое кортеж в хранилище данных семейства столбцов?
Ответ 5
tuple = 1 запись; n-tuple = упорядоченный список записей 'n'; Книга Эльмас Навате (стр. 198 3-е издание).
record = либо упорядоченная, либо неупорядоченная.
Ответ 6
строка из таблицы базы данных
Ответ 7
Как я понимаю, таблица имеет набор ключей K и функцию T ввода с доменом K. Строка или "кортеж" таблицы представляет собой функцию r с областью K, для которой r (k) является элемент T (k) для каждой клавиши k. Таким образом, терминология вводит в заблуждение в том смысле, что "кортеж" действительно больше похож на ассоциативный массив.
Ответ 8
Tuple используется для ссылки на строку в модели реляционной базы данных. Но кортеж имеет небольшую разницу в строке.
Ответ 9
Кортежи - это известные значения, которые используются для связывания таблицы в реляционной БД.
Ответ 10
Кортеж используется для определения фрагмента данных из куба; он состоит из упорядоченного набора одного элемента из одного или нескольких измерений. Кортеж используется для идентификации определенных разделов многомерных данных из куба; кортеж, состоящий из одного члена из каждого измерения в кубе, полностью описывает значение ячейки.