Подтвердить что ты не робот

Каково отношение в терминологии базы данных?

Когда кто-то ссылается на отношение в курсе базы данных, что это значит?

4b9b3361

Ответ 1

Удивительно, что "отношение" в "реляционных" базах данных не поддерживает отношение внешних ключей одной таблицы к другой. "Отношение - это структура данных, состоящая из заголовка и неупорядоченного набора кортежей, которые имеют один и тот же тип", согласно Wikipedia на 'Relation (database)'.

В SQL RDBMSes (например, MS SQL Server и Oracle) таблицы представляют собой хранимые отношения, где имена столбцов, определенные в словаре данных, образуют "заголовок", а строки являются "кортежами" отношения.

Затем из таблицы запрос может возвращать другое отношение:

create table t (x number primary key, y number not null);

Table created.

SQL> insert into t values (1, 10);

1 row created.

SQL> insert into t values (2, 20);

1 row created.

SQL> select x from t;

         X
----------
         1
         2

select x from t возвращает отношение с меньшим количеством столбцов, кортежей с меньшим количеством элементов, чем у базовой таблицы. И select x, y from t where x = 1 вернет отношение с меньшим количеством кортежей, чем базовая таблица:

SQL> select x, y from t where x = 1;

         X          Y
---------- ----------
         1         10

Пример использования внутреннего соединения:

SQL> create table s (x number primary key, words varchar2(100) not null);

Table created.

SQL> insert into s values (1, 'Hello World!');

1 row created.

SQL> insert into s values (3, 'Will not show');

1 row created.

SQL> select t.x, t.y, s.words
  2  from t
  3  inner join s
  4      on t.x = s.x;

         X          Y WORDS
---------- ---------- ---------------
         1         10 Hello World!

Концептуально, t inner join s on t.x = s.x выполняет следующие шаги:

  • Возьмите декартово произведение s и t, которое должно взять каждую строку s и объединить его с каждой строкой t, что приведет к набору с размером s * размера t кортежей или строк, каждый со всеми столбцами из s и t, как и результаты:

    SQL > выберите * из s, t;

         X WORDS                    X          Y
    

         3 Will not show            1         10
         3 Will not show            2         20
         1 Hello World!             1         10
         1 Hello World!             2         20
    

(Или select * from s cross join t в синтаксисе SQL-92). Из декартова продукта, содержащего четыре кортежа/строки с четырьмя столбцами on s.x = t.x, обрезает кортежи до одного, все еще с четырьмя столбцами:

SQL> select *
  2  from t
  3  inner join s
  4      on t.x = s.x;

         X          Y          X WORDS
---------- ---------- ---------- ---------------
         1         10          1 Hello World!

И select t.x, t.y, s.words бреет один столбец от отношения.

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

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

Ответ 2

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

Ответ 3

Проще говоря, "отношение" - это таблица, заголовок - это определение структуры, а строки - данные.

Ответ 4

Здесь есть четыре ответа, и они все одинаковые, и все неправильно. Термин "реляционный" относится к тому факту, что записи в таблице моделируют математическое отношение.

Ответ 5

Эти статьи могут вас заинтересовать:

В простом английском: отношение - это данные в табличном формате с фиксированным числом столбцов и типом данных для каждого столбца.

Это может быть таблица, представление, результат подзапроса или функции и т.д.

Ответ 6

Практичность, "Отношение" в реляционной модели может рассматриваться как "Таблица" в реальных продуктах RDBMS (Oracle, SQL Server, MySQL и т.д.), а "Tuples" в отношении также можно рассматривать как "Строки", или "Записи" в таблице. Единственное различие между ними заключается в том, что Relation представляет собой набор кортежей, а Table - это мешок с записями. В качестве набора отношение отключает повторяющиеся элементы (кортежи) и все кортежи в нем неупорядочены, но записи в таблице могут повторяться и всегда находятся в определенной последовательности как для физического хранения, так и для считывания человеком.

И есть два похожих термина, которые часто вызывают путаницу и непонимание в области базы данных. Обратите внимание на них: "Связь" в модели E/R и "Отношение" в реляционной модели совершенно разные. При преобразовании модели E/R в реляционную модель как сущности, так и отношения в первом представлены (с немного другой структурой) как отношения (таблицы) в последнем, И ассоциация ( "ссылка" или "отношение" также используется) между таблицами, фактически известная как внешний ключ, по-прежнему отличается от отношения между сущностями.

Точнее, вы можете выделить связь и переменную отношения (relvar). Отношение представляет собой абстрактную структуру, которая содержит набор атрибутов, а relvar - это статус набора данных в конкретный момент этого отношения. Первое можно рассматривать как определение таблицы с помощью столбцов, а второе - это набор данных в этой таблице. (Подумайте о Type vs Variable на C или любом другом языке процедурного программирования и Class vs Object в ООП.)

Ниже приведены соответствующие термины между теорией отношений и практикой базы данных:

Relation             <-->  Table
Tuple                <-->  Record, Row
Attribute            <-->  Column, Field
Domain of attribute  <-->  Datatype of column

Ответ 7

Отношение - это таблица, представляющая собой набор данных. Таблица является результатом запроса.

Почему таблица называется отношением? Короче говоря, потому что все значения в таблице могут быть определены соотношением в смысле теории множеств.

Таблица содержит набор данных. Все элементы в множестве определяются соотношением. В теории множеств отношения часто обозначаются xRy, где x связано с y соотношением R. Например, (2) R (-2), где отношение R равно x, является отрицательным значением y. Множество всех отрицательных чисел определяется этим соотношением R, где область - все положительные числа, а диапазон - все отрицательные числа.

Мы могли бы также иметь двоичное отношение: ('Boston') R (American Cities), где отношение R определяется как x может быть определено y.

Мы могли бы также иметь двоичное отношение: ('Mango') R (Fruit), где отношение R определяется как x - это тип пищи. Таким образом, x - это значение в области (вход) отношения, а y - значение в диапазоне (выходе) отношения.

Таблица базы данных всех граждан в Нью-Йорке может быть представлена ​​как

Citizen(Social_Security_Number, Name, Home_Address).

Здесь отношение в смысле теории множеств есть xRy, где отношение R определяется как x является гражданином, живущим в y, где мы определяем y как Нью-Йорк.

Запрос может также возвращать новое отношение (т.е. возвращает набор данных, определяемых новым отношением). Если мы хотим запросить базу данных, чтобы найти всех граждан, имеющих фамилию "Perrone", мы бы определили наш результирующий набор, основанный на другом соотношении xRy, а именно: x - гражданин, проживающий в Нью-Йорке с фамилией, y, где мы определяем y как "Perrone".

Ответ 8

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

Я не могу сделать это определение короче, не оставляя что-то, но он настолько короток, чтобы быть просто списком терминов. Если я сделаю это дольше, я, вероятно, смущу основную точку, которая заключается в следующем: "Что означает словосочетание в этом контексте? Что связано?"