максимальное и минимальное количество кортежей в естественном соединении

Я наткнулся на вопрос, в котором говорится

Рассмотрим следующую схему отношений, относящуюся к студенту.

  • база данных: студент (rollno, имя, адрес)
  • Зарегистрироваться (номер_ролла, номер_курса, название курса)

где первичные ключи показаны подчеркнутыми. Количество кортежей в таблицах Student и Enroll равно 120 и 8 соответственно. Каково максимальное и минимальное количество кортежей, которые могут присутствовать в (Student * Enroll), где '*' обозначает естественное соединение?

Я видел несколько решений в Интернете, таких как это или это

В моем понимании. максимальное количество кортежей должно быть 8, а минимальное также должно быть 8, поскольку для каждого (rollnum,course) в Студентах должно быть число рулонов. Кто может помочь в этом плане


person Community    schedule 26.03.2014    source источник
comment
Ваша первая ссылка решений требует аутентификации для просмотра ответа.   -  person crthompson    schedule 27.03.2014
comment
@paqogomez утверждает, что естественное объединение двух наборов возвращает только те кортежи, в которых общий атрибут между двумя кортежами совпадает. Здесь общим атрибутом является rollno. Поскольку в таблице Enroll всего 8 кортежей, максимальное количество кортежей в естественном соединении Student и Enroll не может быть больше 8. Это будет тот случай, когда каждый список no в таблице Enroll также присутствует в таблице Student. . И минимальное количество кортежей в их естественном соединении равно 0, где нет ни одного общего roll no между двумя таблицами.   -  person    schedule 27.03.2014
comment
Ну ты прав! Enroll может содержать данные минимум об 1 ученике или максимум о 8 учениках. Естественное (внутреннее) соединение всегда приводит к 8 строкам, поскольку roll no ссылается на Enroll.   -  person KrazzyNefarious    schedule 27.03.2014
comment
min = 8 и max = 8 - это правильный ответ, я думаю, @BhupeshC, просто интересно, как много людей дают разные ответы в Интернете.   -  person    schedule 27.03.2014
comment
@ user1765876, будучи составным ключом, вы не можете вставить null в roll no и не можете вставить какие-либо другие данные, кроме тех, что у вас есть в Student. Итак, минимум = 8 и максимум 8.   -  person KrazzyNefarious    schedule 27.03.2014


Ответы (4)


Если бы существовало референтное ограничение, гарантирующее, что каждый rollno в Enroll должен также отображаться в Student, тогда ваш ответ 8 как для минимума, так и для максимума был бы правильным. Однако на самом деле в вопросе не упоминается какое-либо такое ограничение. Нет необходимости предполагать, что ограничение RI существует только потому, что атрибут rollno присутствует в обеих таблицах. Таким образом, лучший ответ — минимум 0 и максимум 8. Если это вопрос с несколькими вариантами ответов и 0,8 не является одним из данных ответов, тогда вместо этого ответьте на 8,8 - и скажите учителю, что вопрос неясен.

person nvogel    schedule 28.03.2014

Надеюсь, вы поняли, что такое Natural Join. Вы можете просмотреть здесь.

Если таблицы R и S содержат общие атрибуты и значение этого атрибута в каждом кортеже в обеих таблицах одинаково, то естественное соединение приведет к n*m кортежам, поскольку оно вернет все комбинации кортежей.

Рассмотрим следующие две таблицы

Таблица R (с атрибутами A и C)

 A  |  C
----+----
 1  |  2
 3  |  2

Таблица S (с атрибутами B и C)

 B  |  C
----+----
 4  |  2
 5  |  2
 6  |  2

Результат естественного соединения R * S (если домен атрибута C в двух таблицах одинаков)

 A | B |  C
---+---+----
 1 | 4 |  2
 1 | 5 |  2
 1 | 6 |  2
 3 | 4 |  2
 3 | 5 |  2
 3 | 6 |  2  

Вы можете видеть, что и R, и S содержат атрибут C, значение которого равно 2 в каждом кортеже. Таблица R содержит 2 кортежа, таблица S содержит 3 кортежа, где таблица результатов содержит 2 * 3 = 6 кортежей.

Кроме того, при выполнении естественного соединения, если между двумя отношениями нет общих атрибутов, естественное соединение будет вести себя как декартово произведение. В этом случае у вас, очевидно, будет m x n как максимальное количество кортежей.

Рассмотрим следующие две таблицы

Таблица R (с атрибутами A и B)

 A  |  B
----+----
 1  |  2
 3  |  2

Таблица S (с атрибутами C и D)

 C  |  D
----+----
 4  |  2
 5  |  2

Результат естественного соединения R * S

 A | B |  C |  D
---+---+----+----
 1 | 2 |  4 |  2
 1 | 2 |  5 |  2
 3 | 2 |  4 |  2
 3 | 2 |  5 |  2

Надеюсь это поможет.

person Subash    schedule 09.01.2016

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

person Pravin Janjal    schedule 09.01.2017
comment
Это не ясно. Вы имеете в виду количество строк в декартовом произведении обеих таблиц? Если это так, вам все еще не ясно, что вы подразумеваете под декартовым произведением. Что бы вы ни имели в виду, это почти наверняка неверно, потому что, поскольку есть общие столбцы, естественное соединение может иметь меньше кортежей. - person philipxy; 22.12.2018

Да, ответ должен быть 8,8. Поскольку Rollno является ключом в таблице Student, а rollno,courseno являются составными ключами. Отношения между таблицей Student и enroll 1:M . Таким образом, максимальное количество кортежей такое же, как и многие стороны, т.е. 8 И минимальное количество кортежей равно 8, если внешний ключ существует, иначе 0.

Итак, ответ 8,8.

person A K Singh    schedule 22.12.2018
comment
Как указывает принятый ответ, в вопросе не говорится, что отношения между студентом и таблицей регистрации равны 1: M [так в оригинале], поэтому вы предполагаете это безосновательно. Более того, это то же самое, что и [a] Внешний ключ существует[s], но вы пишете так, как будто это не так. Кроме того, как этот ответ добавляет то, чего нет в других ответах, чтобы сделать его полезным (согласно стрелке голосования при наведении курсора мыши)? - person philipxy; 22.12.2018