Найдите мощность естественного соединения

<сильный>|Х| представляет количество кортежей в X
жирным шрифтом обозначаются ключи в отношении

Рассмотрим отношения R(A, B) и S(A, C), и что R имеет внешний ключ на A, который ссылается на S.
|R ✶ S| (где '*' означает естественное соединение):
Возможные варианты:
1. |R|
2. |S|
3. |R|.|S|
4. max(|R|, |S|)
5. min(|R|, |S|)

Что я понимаю о мощности естественного соединения? что если между двумя отношениями нет общего атрибута, то естественное соединение будет действовать как перекрестное произведение, и мощность будет равна r * s. Но я не понимаю, как ключевые ограничения играют роль в определении кардинальности. Может кто-нибудь объяснить?


person rdr2    schedule 10.05.2020    source источник
comment
. . Естественные соединения не являются естественными ни в каком смысле этого слова. Внешний ключ может иметь или не иметь имя первичного ключа. Другие столбцы могут иметь или не иметь такое же имя. Any — это любое значение от 0 до R * S.   -  person Gordon Linoff    schedule 10.05.2020
comment
Итак, если в R есть внешний ключ, которым является A, который ссылается на первичный ключ S, которым является A. Это означает, что все значения в R должны присутствовать в S?   -  person rdr2    schedule 10.05.2020
comment
@Gordon (снова) Естественные соединения совершенно естественны, если вы создаете схему естественным образом. В этом случае A в двух схемах выделены жирным шрифтом. Значит ли это, что они являются ключами? А также A в R является внешним ключом, ссылающимся на A в S. Это довольно необычная схема, предполагающая, что эта схема представляет собой нормализацию 6NF того, что начиналось как одна таблица.   -  person AntC    schedule 11.05.2020
comment
@ndr2 . . . Нет никакой гарантии, что все столбцы в двух таблицах имеют одинаковые имена. Следовательно, даже при наличии отношения внешнего ключа нулевые строки могут совпадать. В естественном соединении нет ничего естественного.   -  person Gordon Linoff    schedule 11.05.2020
comment
Что предложила работа с некоторыми примерами? См. Как задать вопрос, наберите в Google "домашнее задание stackexchange" и наведите указатель мыши на тексты со стрелкой голосования. PS SQL — это не реляционная алгебра. Выберите 1 и удалите другой тег. PS Существует множество реляционных алгебр. Который ваш? PS Это FAQ. Прежде чем рассматривать публикацию, прочитайте свой учебник и / или руководство и погуглите любое сообщение об ошибке или множество четких, кратких и точных формулировок вашего вопроса / проблемы / цели, с вашими конкретными строками / именами и тегами site: stackoverflow.com и без них; прочитал много ответов. Отразите свое исследование.   -  person philipxy    schedule 11.05.2020
comment
Отвечает ли это на ваш вопрос? максимальное и минимальное количество кортежей в естественном соединении   -  person philipxy    schedule 11.05.2020


Ответы (2)


Если предположить, что полужирный шрифт A в каждой схеме означает, что это ключ; и предполагая, что ограничение внешнего ключа сохраняется, то есть значение A для каждой строки в R действительно соответствует значению A в S:

  • Каждая строка в R естественным образом соединяется со строкой в ​​S на A.
  • В S могут быть строки, которые не присоединяются к R (поскольку для этого не существует ограничения внешнего ключа).
  • Таким образом, мощность соединенных отношений равна мощности R, ответ 1.

Есть ли реальное применение для такой схемы? Учтите, что S — это имя клиента в C, введенное по номеру клиента в A. R содержит дату рождения в B, а также номер клиента в A. У каждого Клиента должно быть имя; это правда, что каждый Клиент (лицо) должен иметь дату рождения, но нам не нужно записывать это, если/пока они не приобретут товары с возрастным ограничением.

person AntC    schedule 10.05.2020
comment
@rdr2 . . . Грустно, что вы приняли этот ответ. Вопрос настолько искажен, что на него нет ответа. Вы можете сделать так много предположений, не упомянутых в вопросе, чтобы получить ответ, но это не меняет расплывчатости вопроса. Я не отрицаю ответы, но я не думаю, что это действительно решает вопрос. - person Gordon Linoff; 11.05.2020

Совершенно недостаточно информации для ответа на этот вопрос. «Естественное» соединение может возвращать почти любое значение от 0 до R*S. Ниже приведены примеры.

Этот пример возвращает 12:

create table s1 (id int primary key);
create table r1 (s1_id int references s1(id));

insert into s1 (id) values (1), (2), (3);

insert into r1 (s1_id) values (1), (2), (2), (3);

Этот пример возвращает 0:

create table s2 (id int primary key, x int default 2);
create table r2 (s2_id int references s2(id), x int default 1);

insert into s2 (id) values (1), (2), (3);

insert into r2 (s2_id) values (1), (2), (2), (3);

Этот пример возвращает 4:

create table s3 (id int primary key, y int default 2);
create table r3 (id int references s3(id), x int default 1);

insert into s3 (id) values (1), (2), (3);

insert into r3 (id) values (1), (2), (2), (3);

Во всех них r имеет отношение внешнего ключа к s. И используется «естественное» соединение. Вот скрипт db‹>.

Даже если вы предполагаете, что «А» являются первичными ключами И что других столбцов нет, количество строк все равно различается:

-- returns 4
create table s5 (id int primary key);
create table r5 (id int references s4(id));

insert into s5 (id) values (1), (2), (3);    
insert into r5 (id) values (1), (1), (2), (2);

Против:

-- returns 0
create table s4 (id int primary key);
create table r4 (id int references s4(id));

insert into s4 (id) values (1), (2), (3);

insert into r4 (id) values (NULL), (NULL), (NULL), (NULL);
person Gordon Linoff    schedule 10.05.2020
comment
Гордон, ты не заметил выделенные жирным шрифтом A в начале q. По общему признанию, q не говорит, что это значит, но разумно предположить, что они обозначают ключи. Я сделал это предположение/предположение явным в своем ответе. Ни в одном из ваших примеров не объявляется ключ для таблицы r. Только один из ваших примеров имеет одинаковые имена атрибутов (внешнего) ключа между двумя таблицами. Поскольку одно и то же имя - это весь смысл Natural Join, я думаю, вы абсолютно не ответили на вопрос (даже учитывая его небрежность). - person AntC; 11.05.2020