|
R1
Филиал | Страна | Город |
Ф1 | Россия | Москва |
Ф2 | Россия | Санкт-Петербург |
Ф3 | Германия | Берлин |
Ф4 | США | Нью-Йорк |
Ф5 | США | Чикаго |
R2
Клиент | Страна | Номер договора |
Иванов | Россия | |
Игнатьев | Россия | |
Котов | США | |
Кротов | Германия | |
Кротова | Германия | |
Курпатов | США | |
Штейн | Израиль | |
Штейн | Израиль | |
Кротова | Германия |
R3
Номер договора | Филиал | Дата начала | Дата окончания |
Ф1 | 01.01.2013 | 09.01.2013 | |
Ф2 | 31.12.2012 | 15.01.2013 | |
Ф3 | 20.01.2013 | 02.02.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф4 | 05.01.2013 | 15.01.2013 | |
Ф5 | 27.12.2012 | 15.01.2013 | |
Ф2 | 20.01.2013 | 30.01.2013 | |
Ф3 | 11.01.2013 | 21.01.2013 |
Клиент | Страна | Номер договора |
Иванов | Россия | |
Игнатьев | Россия | |
Котов | США | |
Кротов | Германия | |
Кротова | Германия | |
Курпатов | США | |
Штейн | Израиль | |
Штейн | Израиль | |
Кротова | Германия |
R2
R3
Номер договора | Филиал | Дата начала | Дата окончания |
Ф1 | 01.01.2013 | 09.01.2013 | |
Ф2 | 31.12.2012 | 15.01.2013 | |
Ф3 | 20.01.2013 | 02.02.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф4 | 05.01.2013 | 15.01.2013 | |
Ф5 | 27.12.2012 | 15.01.2013 | |
Ф2 | 20.01.2013 | 30.01.2013 | |
Ф3 | 11.01.2013 | 21.01.2013 |
а) Соединяем R2 с R3 по номеру договора, чтобы получить список клиентов и филиалов, с которыми они заключили договоры.:
R4 = ∏филиал, клиент(R2 ⋈ R2.номер договора = R3.номер договора R3)
Клиент | Страна | Номер договора |
Иванов | Россия | |
Игнатьев | Россия |
R4
Филиал | Клиент |
Ф1 | Иванов |
Ф2 | Игнатьев |
Ф3 | Котов |
Ф3 | Кротов |
Ф3 | Кротова |
Ф4 | Курпатов |
Ф5 | Штейн |
Ф2 | Штейн |
Ф3 | Кротова |
b) Соединяем R4 с собой со следующим условием: Клиент = Клиент и Филиал!= Филиал:
R5 = R4 ⋈ R4.клиент = R4`.клиент and R4.филиал!= R4`.филиал R4`
R5
Филиал | Клиент | Филиал | Клиент |
Ф1 | Иванов | Ф1 | Иванов |
Ф2 | Игнатьев | Ф2 | Игнатьев |
Ф3 | Котов | Ф3 | Котов |
Ф3 | Кротов | Ф3 | Кротов |
Ф3 | Кротова | Ф3 | Кротова |
Ф4 | Курпатов | Ф4 | Курпатов |
Ф5 | Штейн | Ф5 | Штейн |
Ф5 | Штейн | Ф2 | Штейн |
Ф2 | Штейн | Ф5 | Штейн |
Ф2 | Штейн | Ф2 | Штейн |
Ф3 | Кротова | Ф3 | Кротова |
c) Исключаем строки, дублирующие друг друга и получаем список клиентов, заключивших договоры с несколькими филиалами:
R6 = ∏клиент(R5)
R6
Клиент |
Штейн |
R2
Клиент | Страна | Номер договора |
Иванов | Россия | |
Игнатьев | Россия | |
Котов | США | |
Кротов | Германия | |
Кротова | Германия | |
Курпатов | США | |
Штейн | Израиль | |
Штейн | Израиль | |
Кротова | Германия |
Номер договора | Филиал | Дата начала | Дата окончания |
Ф1 | 01.01.2013 | 09.01.2013 | |
Ф2 | 31.12.2012 | 15.01.2013 | |
Ф3 | 20.01.2013 | 02.02.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф4 | 05.01.2013 | 15.01.2013 | |
Ф5 | 27.12.2012 | 15.01.2013 | |
Ф2 | 20.01.2013 | 30.01.2013 | |
Ф3 | 11.01.2013 | 21.01.2013 |
R3
a) Соединим R2 с R3 по номеру договора, чтобы получить список филиалов и стран, с клиентами из которых работали филиалы:
R4 = ∏филиал, страна(R2 ⋈ R2.номер договора = R3.номер договора R3)
R4
Филиал | Страна |
Ф1 | Россия |
Ф2 | Россия |
Ф3 | США |
Ф3 | Германия |
Ф3 | Германия |
Ф4 | США |
Ф5 | Израиль |
Ф2 | Израиль |
Ф3 | Германия |
b) Соединяем R4 с собой со следующим условием: Филиал = Филиал и Страна!= Страна:
R5 = ∏филиал(R4 ⋈ R4. филиал = R4`. филиал and R4.страна!= R4`.страна R4`)
R5
Филиал | Страна | Филиал | Страна |
Ф1 | Россия | Ф1 | Россия |
Ф2 | Россия | Ф2 | Россия |
Ф2 | Россия | Ф2 | Израиль |
Ф2 | Израиль | Ф2 | Израиль |
Ф3 | США | Ф3 | США |
Ф3 | США | Ф3 | Германия |
Ф3 | Германия | Ф3 | Германия |
Ф3 | Германия | Ф3 | Германия |
Ф4 | США | Ф4 | США |
Ф5 | Израиль | Ф5 | Израиль |
Ф3 | Германия | Ф3 | Германия |
с) Берём проекцию по филиалам отношения R3, чтобы исключить филиалы, не заключившие ни одного договора, вычитаем из неё проекцию филиалов, работающих с клиентами из разных стран, и получаем список филиалов, работающих с клиентами только одной страны:
R6 = ∏Филиал (R3)\ ∏Филиал (R5)
R6
Филиал |
Ф1 |
Ф4 |
Ф5 |
R2
Клиент | Страна | Номер договора |
Иванов | Россия | |
Игнатьев | Россия | |
Котов | США | |
Кротов | Германия | |
Кротова | Германия | |
Курпатов | США | |
Штейн | Израиль | |
Штейн | Израиль | |
Кротова | Германия |
Номер договора | Филиал | Дата начала | Дата окончания |
Ф1 | 01.01.2013 | 09.01.2013 | |
Ф2 | 31.12.2012 | 15.01.2013 | |
Ф3 | 20.01.2013 | 02.02.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф4 | 05.01.2013 | 15.01.2013 | |
Ф5 | 27.12.2012 | 15.01.2013 | |
Ф2 | 20.01.2013 | 30.01.2013 | |
Ф3 | 11.01.2013 | 21.01.2013 |
R3
a) Соединяем R2 с R3 по номеру договора, чтобы получить список клиентов и филиалов, с которыми они заключили договоры. Филиалов, не заключивших ни одного договора, в получившемся отношении не будет, т.к. их нет в отношении R3:
R4 = ∏номер договора, филиал, клиент(R2 ⋈ R2.номер договора = R3.номер договора R3)
R4
Номер договора | Филиал | Клиент |
Ф1 | Иванов | |
Ф2 | Игнатьев | |
Ф3 | Котов | |
Ф3 | Кротов | |
Ф3 | Кротова | |
Ф4 | Курпатов | |
Ф5 | Штейн | |
Ф2 | Штейн | |
Ф3 | Кротова |
b) Соединяем R4 с собой по следующему предикату: Клиент = Клиент, Филиал = Филиал, Номер договора!= Номер договора:
R5 = R4 ⋈ R4.клиент = R4`.клиент and R4.филиал = R4`.филиал and R4.номер договора!= R4`.номер договора R4`
R5
Номер договора | Филиал | Клиент | Номер договора | Филиал | Клиент |
Ф1 | Иванов | Ф1 | Иванов | ||
Ф2 | Игнатьев | Ф2 | Игнатьев | ||
Ф3 | Котов | Ф3 | Котов | ||
Ф3 | Кротов | Ф3 | Кротов | ||
Ф3 | Кротова | Ф3 | Кротова | ||
Ф3 | Кротова | Ф3 | Кротова | ||
Ф3 | Кротова | Ф3 | Кротова | ||
Ф4 | Курпатов | Ф4 | Курпатов | ||
Ф5 | Штейн | Ф5 | Штейн | ||
Ф2 | Штейн | Ф2 | Штейн |
с) Исключаем строки, дублирующие друг друга, и получаем список клиентов, заключивших несколько договоров с одним филиалом:
R6 = ∏ клиент(R5)
R6
Клиент |
Кротова |
4. Филиалы, которые заключили договоры только с клиентами из той же страны, в которой расположен этот филиал
Филиал | Страна | Город |
Ф1 | Россия | Москва |
Ф2 | Россия | Санкт-Петербург |
Ф3 | Германия | Берлин |
Ф4 | США | Нью-Йорк |
Ф5 | США | Чикаго |
R1
R2
Клиент | Страна | Номер договора |
Иванов | Россия | |
Игнатьев | Россия | |
Котов | США | |
Кротов | Германия | |
Кротова | Германия | |
Курпатов | США | |
Штейн | Израиль | |
Штейн | Израиль | |
Кротова | Германия |
Номер договора | Филиал | Дата начала | Дата окончания |
Ф1 | 01.01.2013 | 09.01.2013 | |
Ф2 | 31.12.2012 | 15.01.2013 | |
Ф3 | 20.01.2013 | 02.02.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф4 | 05.01.2013 | 15.01.2013 | |
Ф5 | 27.12.2012 | 15.01.2013 | |
Ф2 | 20.01.2013 | 30.01.2013 | |
Ф3 | 11.01.2013 | 21.01.2013 |
R3
a) Соединяем R2 с R3 по номеру договора, чтобы получить список клиентов и филиалов, с которыми они заключили договоры. Филиалов, не заключивших ни одного договора, в получившемся отношении не будет, т.к. их нет в отношении R3:
R4 = ∏номер договора, филиал, клиент, страна(R2 ⋈ R2.номер договора = R3.номер договора R3)
R4
Номер договора | Филиал | Клиент | Страна |
Ф1 | Иванов | Россия | |
Ф2 | Игнатьев | Россия | |
Ф3 | Котов | США | |
Ф3 | Кротов | Германия | |
Ф3 | Кротова | Германия | |
Ф4 | Курпатов | США | |
Ф5 | Штейн | Израиль | |
Ф2 | Штейн | Израиль | |
Ф3 | Кротова | Германия |
b) Соединяем R4 и R1 по следующему предикату: Филиал = Филиал, Страна филиала!= Страна клиента и получаем список филиалов, заключивших договоры с клиентами из других стран.
R5 = ∏ Филиал (R4 ⋈ R4.филиал = R2.филиал and R4.Страна филиала!= R4.Страна клиента R2)
R5
Филиал |
Ф2 |
Ф3 |
Ф5 |
с) Берём проекцию по филиалам отношения R3, чтобы исключить филиалы, не заключившие ни одного договора, вычитаем из неё получившееся отношение R5 и получаем список филиалов, работающих с клиентами только из той страны, где находятся филиалы:
R6 = (∏ Филиал(R3)\R5)
R6
Филиал |
Ф1 |
Ф4 |
Клиент | Страна | Номер договора |
Иванов | Россия | |
Игнатьев | Россия | |
Котов | США | |
Кротов | Германия | |
Кротова | Германия | |
Курпатов | США | |
Штейн | Израиль | |
Штейн | Израиль | |
Кротова | Германия |
R2
Номер договора | Филиал | Дата начала | Дата окончания |
Ф1 | 01.01.2013 | 09.01.2013 | |
Ф2 | 31.12.2012 | 15.01.2013 | |
Ф3 | 20.01.2013 | 02.02.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф4 | 05.01.2013 | 15.01.2013 | |
Ф5 | 27.12.2012 | 15.01.2013 | |
Ф2 | 20.01.2013 | 30.01.2013 | |
Ф3 | 11.01.2013 | 21.01.2013 |
R3
а) Соединяем R2 с R3 по номеру договора, чтобы получить список клиентов и филиалов, с которыми они заключили договоры:
R4 = ∏филиал, клиент, номер договора(R2 ⋈ R2.номер договора = R3.номер договора R3)
R4
Филиал | Клиент |
Ф1 | Иванов |
Ф2 | Игнатьев |
Ф3 | Котов |
Ф3 | Кротов |
Ф3 | Кротова |
Ф4 | Курпатов |
Ф5 | Штейн |
Ф2 | Штейн |
Ф3 | Кротова |
b) Соединяем R4 с собой со следующим условием: Клиент = Клиент и Филиал!= Филиал:
R5 = R4 ⋈ R4.клиент = R4`.клиент and R4.филиал!= R4`.филиал R4`
R5
Филиал | Клиент | Филиал | Клиент |
Ф1 | Иванов | Ф1 | Иванов |
Ф2 | Игнатьев | Ф2 | Игнатьев |
Ф3 | Котов | Ф3 | Котов |
Ф3 | Кротов | Ф3 | Кротов |
Ф3 | Кротова | Ф3 | Кротова |
Ф4 | Курпатов | Ф4 | Курпатов |
Ф5 | Штейн | Ф5 | Штейн |
Ф5 | Штейн | Ф2 | Штейн |
Ф2 | Штейн | Ф5 | Штейн |
Ф2 | Штейн | Ф2 | Штейн |
Ф3 | Кротова | Ф3 | Кротова |
c) Получаем список клиентов, заключивших договоры с несколькими филиалами и эти филиалы:
R6 = ∏клиент, филиал(R5)
R6
Клиент | Филиал |
Штейн | Ф2 |
Штейн | Ф5 |
d) Соединяем R2 с R3 по номеру договора, чтобы получить список клиентов и филиалов, с которыми они заключили договоры:
R7 = ∏номер договора, филиал, клиент(R2 ⋈ R2.номер договора = R3.номер договора R3)
R7
Номер договора | Филиал | Клиент |
Ф1 | Иванов | |
Ф2 | Игнатьев | |
Ф3 | Котов | |
Ф3 | Кротов | |
Ф3 | Кротова | |
Ф4 | Курпатов | |
Ф5 | Штейн | |
Ф2 | Штейн | |
Ф3 | Кротова |
e) Соединяем R7 с собой по следующему предикату: Клиент = Клиент, Филиал = Филиал, Номер договора!= Номер договора:
R8 = R7 ⋈ R7.клиент = R7`.клиент and R7.филиал = R7`.филиал and R7.номер договора!= R7`.номер договора R7`
R8
Номер договора | Филиал | Клиент | Номер договора | Филиал | Клиент |
Ф1 | Иванов | Ф1 | Иванов | ||
Ф2 | Игнатьев | Ф2 | Игнатьев | ||
Ф3 | Котов | Ф3 | Котов | ||
Ф3 | Кротов | Ф3 | Кротов | ||
Ф3 | Кротова | Ф3 | Кротова | ||
Ф3 | Кротова | Ф3 | Кротова | ||
Ф3 | Кротова | Ф3 | Кротова | ||
Ф4 | Курпатов | Ф4 | Курпатов | ||
Ф5 | Штейн | Ф5 | Штейн | ||
Ф2 | Штейн | Ф2 | Штейн |
f) Исключаем строки, дублирующие друг друга и получаем список клиентов, заключивших несколько договоров с одним филиалом:
R9 = ∏ клиент(R8)
R9
Клиент |
Кротова |
g) Вычитаем из списка клиентов, заключивших договоры с несколькими филиалам список клиентов, заключивших несколько договоров с одним филиалом:
R10 = ∏ клиент(R6\R9)
R10
Клиенты |
Штейн |
R2
Клиент | Страна | Номер договора |
Иванов | Россия | |
Игнатьев | Россия | |
Котов | США | |
Кротов | Германия | |
Кротова | Германия | |
Курпатов | США | |
Штейн | Израиль | |
Штейн | Израиль | |
Кротова | Германия |
R3
Номер договора | Филиал | Дата начала | Дата окончания |
Ф1 | 01.01.2013 | 09.01.2013 | |
Ф2 | 31.12.2012 | 15.01.2013 | |
Ф3 | 20.01.2013 | 02.02.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф4 | 05.01.2013 | 15.01.2013 | |
Ф5 | 27.12.2012 | 15.01.2013 | |
Ф2 | 20.01.2013 | 30.01.2013 | |
Ф3 | 11.01.2013 | 21.01.2013 |
а) Находим клиентов, заключивших договоры с несколькими филиалами (задача 1):
R4
Клиент |
Штейн |
b) Находим клиентов, заключивших несколько договоров с одним филиалом (задача 5):
R5
Клиент |
Кротова |
с) Из проекции из R2 по клиенту вычитаем R4 и R5, чтобы получить список клиентов, заключивших только один договор:
R6 = ∏ клиент((R2\R4)\R5)
R6
Клиент |
Иванов |
Игнатьев |
Котов |
Кротов |
Курпатов |
R1
Филиал | Страна | Город |
Ф1 | Россия | Москва |
Ф2 | Россия | Санкт-Петербург |
Ф3 | Германия | Берлин |
Ф4 | США | Нью-Йорк |
Ф5 | США | Чикаго |
R2
Клиент | Страна | Номер договора |
Иванов | Россия | |
Игнатьев | Россия | |
Котов | США | |
Кротов | Германия | |
Кротова | Германия | |
Курпатов | США | |
Штейн | Израиль | |
Штейн | Израиль | |
Кротова | Германия |
R3
Номер договора | Филиал | Дата начала | Дата окончания |
Ф1 | 01.01.2013 | 09.01.2013 | |
Ф2 | 31.12.2012 | 15.01.2013 | |
Ф3 | 20.01.2013 | 02.02.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф4 | 05.01.2013 | 15.01.2013 | |
Ф5 | 27.12.2012 | 15.01.2013 | |
Ф2 | 20.01.2013 | 30.01.2013 | |
Ф3 | 11.01.2013 | 21.01.2013 |
а) Соединяем R1 и R3 по филиалу, чтобы получить список филиалов, стран, где они находится и номеров договоров, которые заключали эти филиалы:
R4 = ∏номер договора, филиал, страна(R1 ⋈ R1.филиал = R3.филиал R3)
R4
Номер договора | Филиал | Страна |
Ф1 | Россия | |
Ф2 | Россия | |
Ф3 | Германия | |
Ф3 | Германия | |
Ф3 | Германия | |
Ф4 | США | |
Ф5 | США | |
Ф2 | Россия | |
Ф3 | Германия |
b) Соединяем R4 и R2 по следующему предикату: Номер договора = Номер договора, Страна филиала!= Страна клиента
R5 = ∏ клиент (R4 ⋈ R4.номер договора = R2.номер договора and R4.Страна филиала!= R4.Страна клиента R2)
R5
Клиент |
Котов |
Штейн |
с) Вычитаем R5 из проекции R2 по клиенту, чтобы получить список клиентов, заключивших договор только с филиалами, расположенными в той же стране, в которой проживает клиент:
R6 = ∏ клиент(R2\ R5)
R6
Клиент |
Иванов |
Игнатьев |
Кротов |
Кротова |
Курпатов |
R1
Филиал | Страна | Город |
Ф1 | Россия | Москва |
Ф2 | Россия | Санкт-Петербург |
Ф3 | Германия | Берлин |
Ф4 | США | Нью-Йорк |
Ф5 | США | Чикаго |
R2
Клиент | Страна | Номер договора |
Иванов | Россия | |
Игнатьев | Россия | |
Котов | США | |
Кротов | Германия | |
Кротова | Германия | |
Курпатов | США | |
Штейн | Израиль | |
Штейн | Израиль | |
Кротова | Германия |
R3
Номер договора | Филиал | Дата начала | Дата окончания |
Ф1 | 01.01.2013 | 09.01.2013 | |
Ф2 | 31.12.2012 | 15.01.2013 | |
Ф3 | 20.01.2013 | 02.02.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф4 | 05.01.2013 | 15.01.2013 | |
Ф5 | 27.12.2012 | 15.01.2013 | |
Ф2 | 20.01.2013 | 30.01.2013 | |
Ф3 | 11.01.2013 | 21.01.2013 |
а) Соединяем R2 с R3 по номеру договора, чтобы получить список клиентов и филиалов, с которыми они заключили договоры. Филиалов, не заключивших ни одного договора, в получившемся отношении не будет, т.к. их нет в отношении R3:
R4 = ∏номер договора, филиал, клиент, страна(R2 ⋈ R2.номер договора = R3.номер договора R3)
R4
Номер договора | Филиал | Клиент | Страна |
Ф1 | Иванов | Россия | |
Ф2 | Игнатьев | Россия | |
Ф3 | Котов | США | |
Ф3 | Кротов | Германия | |
Ф3 | Кротова | Германия | |
Ф4 | Курпатов | США | |
Ф5 | Штейн | Израиль | |
Ф2 | Штейн | Израиль | |
Ф3 | Кротова | Германия |
b) Соединяем R4 и R2 по следующему предикату: Номер договора = Номер договора, Страна филиала = Страна клиента, чтобы получить список филиалов, заключивших хотя бы один договор с клиентом из своей же страны:
R5 = ∏ Филиал (R4 ⋈ R4.номер договора = R2.номер договора and R4.Страна филиала = R4.Страна клиента R2)
R5
Филиал |
Ф1 |
Ф2 |
Ф3 |
Ф4 |
с) Берём проекцию по филиалам отношения R3, чтобы исключить филиалы, не заключившие ни одного договора, вычитаем из неё получившееся отношение R5:
R6 = ∏ филиал(R3\ R5)
R6
Филиал |
Ф5 |
R2
Клиент | Страна | Номер договора |
Иванов | Россия | |
Игнатьев | Россия | |
Котов | США | |
Кротов | Германия | |
Кротова | Германия | |
Курпатов | США | |
Штейн | Израиль | |
Штейн | Израиль | |
Кротова | Германия |
R3
Номер договора | Филиал | Дата начала | Дата окончания |
Ф1 | 01.01.2013 | 09.01.2013 | |
Ф2 | 31.12.2012 | 15.01.2013 | |
Ф3 | 20.01.2013 | 02.02.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф4 | 05.01.2013 | 15.01.2013 | |
Ф5 | 27.12.2012 | 15.01.2013 | |
Ф2 | 20.01.2013 | 30.01.2013 | |
Ф3 | 11.01.2013 | 21.01.2013 |
а) Соединяем R2 и R3 по номеру договора, чтобы получить список филиалов и стран, где живут клиенты, заключившие договоры с этими филиалами:
R4 = ∏номер договора, филиал, клиент, страна(R2⋈ R2.номер договора = R3.номер договора R3)
R4
Номер договора | Филиал | Клиент | Страна |
Ф1 | Иванов | Россия | |
Ф2 | Игнатьев | Россия | |
Ф3 | Котов | США | |
Ф3 | Кротов | Германия | |
Ф3 | Кротова | Германия | |
Ф4 | Курпатов | США | |
Ф5 | Штейн | Израиль | |
Ф2 | Штейн | Израиль | |
Ф3 | Кротова | Германия |
b) Соединяем R4 с собой со следующим условием: Филиал = Филиал и Страна!= Страна:
R5 = ∏филиал(R4 ⋈ R4. филиал = R4`. филиал and R4.страна!= R4`.страна R4`)
R5
Филиал | Страна | Филиал | Страна |
Ф1 | Россия | Ф1 | Россия |
Ф2 | Россия | Ф2 | Россия |
Ф2 | Россия | Ф2 | Израиль |
Ф2 | Израиль | Ф2 | Израиль |
Ф3 | США | Ф3 | США |
Ф3 | США | Ф3 | Германия |
Ф3 | Германия | Ф3 | Германия |
Ф3 | Германия | Ф3 | Германия |
Ф4 | США | Ф4 | США |
Ф5 | Израиль | Ф5 | Израиль |
Ф3 | Германия | Ф3 | Германия |
с) Чтобы получить список филиалов, работающие с клиентами из разных стран, возьмём проекцию из R5 по филиалу:
R6 = ∏Филиал (R5)
R6
Филиал |
Ф2 |
Ф3 |
R1
Филиал | Страна | Город |
Ф1 | Россия | Москва |
Ф2 | Россия | Санкт-Петербург |
Ф3 | Германия | Берлин |
Ф4 | США | Нью-Йорк |
Ф5 | США | Чикаго |
R2
Клиент | Страна | Номер договора |
Иванов | Россия | |
Игнатьев | Россия | |
Котов | США | |
Кротов | Германия | |
Кротова | Германия | |
Курпатов | США | |
Штейн | Израиль | |
Штейн | Израиль | |
Кротова | Германия | |
Штейн | Израиль | |
Штейн | Израиль | |
Штейн | Израиль |
R3
Номер договора | Филиал | Дата начала | Дата окончания |
Ф1 | 01.01.2013 | 09.01.2013 | |
Ф2 | 31.12.2012 | 15.01.2013 | |
Ф3 | 20.01.2013 | 02.02.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф3 | 30.12.2013 | 09.01.2013 | |
Ф4 | 05.01.2013 | 15.01.2013 | |
Ф5 | 27.12.2012 | 15.01.2013 | |
Ф2 | 20.01.2013 | 30.01.2013 | |
Ф3 | 11.01.2013 | 21.01.2013 | |
Ф1 | 03.02.2013 | 07.02.2013 | |
Ф3 | 10.02.2013 | 15.02.2013 | |
Ф4 | 16.02.2013 | 24.02.2013 |
Способ 1:
а) Соединяем R2 R3 по номеру договора. Делаем проекцию по клиенту и филиалу
R4 = ∏клиент,филиал(R2 ⋈ R2.номер договора = R3.номер договора R3)
R4
Клиент | Филиал |
Иванов | Ф1 |
Игнатьев | Ф2 |
Котов | Ф3 |
Кротов | Ф3 |
Кротова | Ф3 |
Курпатов | Ф4 |
Штейн | Ф5 |
Штейн | Ф2 |
Кротова | Ф3 |
Штейн | Ф1 |
Штейн | Ф3 |
Штейн | Ф4 |
b) Берём декартово произведение полученной таблицы с проекцией по филиал таблицы R1:
R5 = R4*∏филиал(R1)
R5
Клиент | Филиал | Филиал |
Иванов | Ф1 | Ф1 |
Иванов | Ф1 | Ф2 |
Иванов | Ф1 | Ф3 |
Иванов | Ф1 | Ф4 |
Иванов | Ф1 | Ф5 |
Игнатьев | Ф2 | Ф1 |
Игнатьев | Ф2 | Ф2 |
Игнатьев | Ф2 | Ф3 |
Игнатьев | Ф2 | Ф4 |
Игнатьев | Ф2 | Ф5 |
Котов | Ф3 | Ф1 |
Котов | Ф3 | Ф2 |
Котов | Ф3 | Ф3 |
Котов | Ф3 | Ф4 |
Котов | Ф3 | Ф5 |
Кротов | Ф3 | Ф1 |
Кротов | Ф3 | Ф2 |
Кротов | Ф3 | Ф3 |
Кротов | Ф3 | Ф4 |
Кротов | Ф3 | Ф5 |
Кротова | Ф3 | Ф1 |
Кротова | Ф3 | Ф2 |
Кротова | Ф3 | Ф3 |
Кротова | Ф3 | Ф4 |
Кротова | Ф3 | Ф5 |
Курпатов | Ф4 | Ф1 |
Курпатов | Ф4 | Ф2 |
Курпатов | Ф4 | Ф3 |
Курпатов | Ф4 | Ф4 |
Курпатов | Ф4 | Ф5 |
Штейн | Ф5 | Ф1 |
Штейн | Ф5 | Ф2 |
Штейн | Ф5 | Ф3 |
Штейн | Ф5 | Ф4 |
Штейн | Ф5 | Ф5 |
Штейн | Ф2 | Ф1 |
Штейн | Ф2 | Ф2 |
Штейн | Ф2 | Ф3 |
Штейн | Ф2 | Ф4 |
Штейн | Ф2 | Ф5 |
Кротова | Ф3 | Ф1 |
Кротова | Ф3 | Ф2 |
Кротова | Ф3 | Ф3 |
Кротова | Ф3 | Ф4 |
Кротова | Ф3 | Ф5 |
Штейн | Ф1 | Ф1 |
Штейн | Ф1 | Ф2 |
Штейн | Ф1 | Ф3 |
Штейн | Ф1 | Ф4 |
Штейн | Ф1 | Ф5 |
Штейн | Ф3 | Ф1 |
Штейн | Ф3 | Ф2 |
Штейн | Ф3 | Ф3 |
Штейн | Ф3 | Ф4 |
Штейн | Ф3 | Ф5 |
Штейн | Ф4 | Ф1 |
Штейн | Ф4 | Ф2 |
Штейн | Ф4 | Ф3 |
Штейн | Ф4 | Ф4 |
Штейн | Ф4 | Ф5 |
c) Делаем проекцию R5 по клиенту и второму филиалу:
R6 = ∏клиент, филиал (R5)
R6
Клиент | Филиал | Филиал | |||||
Иванов | Ф1 | Ф1 | |||||
Иванов | Ф1 | Ф2 | |||||
Иванов | Ф1 | Ф3 | |||||
Иванов | Ф1 | Ф4 | |||||
Иванов | Ф1 | Ф5 | |||||
Игнатьев | Ф2 | Ф1 | |||||
Игнатьев | Ф2 | Ф2 | |||||
Игнатьев | Ф2 | Ф3 | |||||
Игнатьев | Ф2 | Ф4 | |||||
Игнатьев | Ф2 | Ф5 | |||||
Котов | Ф3 | Ф1 | |||||
Котов | Ф3 | Ф2 | |||||
Котов | Ф3 | Ф3 | |||||
Котов | Ф3 | Ф4 | |||||
Котов | Ф3 | Ф5 | |||||
Кротов | Ф3 | Ф1 | |||||
Кротов | Ф3 | Ф2 | |||||
Кротов | Ф3 | Ф3 | |||||
Кротов | Ф3 | Ф4 | |||||
Кротов | Ф3 | Ф5 | |||||
Кротова | Ф3 | Ф1 | |||||
Кротова | Ф3 | Ф2 | |||||
Кротова | Ф3 | Ф3 | |||||
Кротова | Ф3 | Ф4 | |||||
Кротова | Ф3 | Ф5 | |||||
Курпатов | Ф4 | Ф1 | |||||
Курпатов | Ф4 | Ф2 | |||||
Курпатов | Ф4 | Ф3 | |||||
Курпатов | Ф4 | Ф4 | |||||
Курпатов | Ф4 | Ф5 | |||||
Штейн | Ф5 | Ф1 | |||||
Штейн | Ф5 | Ф2 | |||||
Штейн | Ф5 | Ф3 | |||||
Штейн | Ф5 | Ф4 | |||||
Штейн | Ф5 | Ф5 | |||||
Штейн | Ф2 | Ф1 | |||||
Штейн | Ф2 | Ф2 | |||||
Штейн | Ф2 | Ф3 | |||||
Штейн | Ф2 | Ф4 | |||||
Штейн | Ф2 | Ф5 | |||||
Кротова | Ф3 | Ф1 | |||||
Кротова | Ф3 | Ф2 | |||||
Кротова | Ф3 | Ф3 | |||||
Кротова | Ф3 | Ф4 | |||||
Кротова | Ф3 | Ф5 | |||||
Штейн | Ф1 | Ф1 | |||||
Штейн | Ф1 | Ф2 | |||||
Штейн | Ф1 | Ф3 | |||||
Штейн | Ф1 | Ф4 | |||||
Штейн | Ф1 | Ф5 | |||||
Штейн | Ф3 | Ф1 | |||||
Штейн | Ф3 | Ф2 | |||||
Штейн | Ф3 | Ф3 | |||||
Штейн | Ф3 | Ф4 | |||||
Штейн | Ф3 Дата добавления: 2015-08-29; просмотров: 67 | Нарушение авторских прав
|