Что означает термин "Кортеж" в реляционных базах данных?
пожалуйста, объясните, что подразумевается под кортежами в sql?Спасибо..
10 ответов
большинство ответов здесь на правильном пути. Однако,строка не кортежа!--18-->. ОК*
are ненумерованный наборы известных значений с именами. Таким образом, следующие кортежи-это то же самое (я использую воображаемый синтаксис кортежа, так как реляционный Кортеж в основном является теоретической конструкцией):
(x=1, y=2, z=3)
(z=3, y=2, x=1)
(y=2, z=3, x=1)
...предполагая, конечно, что x, y и z являются целыми числами. Также обратите внимание, что нет такой вещи, как "дубликат" кортеж. Таким образом, не только вышеуказанные равны, они то же самое. Наконец, кортежи могут содержать только известные значения (таким образом, нет нулей).
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.
*
обратите внимание, что я говорю о кортежах, как они существуют в реляционной модели, которая немного отличается от математики в целом.
**
и на всякий случай, если вам интересно, почти все в SQL-это строка или таблица. Следовательно,(1, 2)
- это строка, в то время как VALUES (1, 2)
таблица (с одной строкой).
обновление: я немного расширил этот ответ в блоге здесь.
это укороченный "N-tuple
" (как в quadruple
, quintuple
etc.)
это строка набора строк, взятая в целом.
если вы:
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
.
на реляционных баз данных таблицы отношения (в математическом смысле). Отношения-это наборы кортежей. Таким образом, строка таблицы в реляционной базе данных является кортежем по отношению.
Вики по отношениям:
в математике (точнее, в теория множеств и логика), отношение свойство, присваивающее значения истинности комбинации (K-кортежи) из k индивидуумы. Как правило, свойство описывает возможное соединение между компонентами к-кортеж. Для данного набора K-кортежей истина значение присваивается каждому K-кортежу в зависимости от того, имущество ли или не держит.
независимо от его использования в математике, Кортеж в СУБД обычно считается строкой в таблице или результирующем наборе. В СУБД кортеж неупорядочен. Кортеж в MDDBMS-это экземпляр данных в ячейке со связанными экземплярами измерений (членами).
Что такое Кортеж в хранилище данных семейства столбцов?
кортеж = 1 запись; n-кортеж = упорядоченный список 'n' записей; книга Эльмасри Навате (стр. 198 3-е издание).
запись = упорядоченная или неупорядоченная.
Как я понимаю таблица имеет набор к кнопок и введя функцию Т с доменом К. подряд, или "кортеж", таблицы функция R с домена K, такое, что Р(К) - элемент из Т(К) для каждого ключа K. Поэтому терминология вводит в заблуждение, что "Кортеж" - это больше похоже на ассоциативный массив.
Кортеж используется для ссылки на строку в модели реляционной базы данных. Но Кортеж имеет небольшую разницу с row.
кортеж используется для определения среза данных из куба; он состоит из упорядоченной коллекции одного элемента из одного или нескольких измерений. Кортеж используется для идентификации определенных разделов многомерных данных из куба; кортеж, состоящий из одного элемента из каждого измерения в кубе, полностью описывает значение ячейки.