2016-10-31 2 views
1
Drinker (drinker, age, address) 
Like(drinker, beer) 
Beer (beer, manufacturer) 
Bar (bar, owner, address) 
Frequent(drinker, bar) 
Sell (bar, beer, price) 

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

я не уверен, мой ответ и хотел бы получить подтверждение о ли я на правильном пути:

R1:=πdrinker,bar,beer(LIKE⨝FREQUENT) 
R2:=πdrinker,bar,beer(FREQUENT⨝SELL) 
R3:=πdrinker,bar(R1-R2) 
Solution:= FREQUENT - R3 

R1 пытается получить весь набор пьющих, пиво понравилось, бар посетил

R2 пытается получить весь набор пива из всех баров пьющего частых

R3 получить все пьющие композиции бруска, которые не удовлетворяют все пиво понравилось пить

Наконец, вычитание этих наборов (R3) из всего набора

Это правильно?

ответ

0
R1:=πdrinker,bar,beer(LIKE⨝FREQUENT) 

Это строки, где Like(drinker, beer) AND Frequent(drinker, bar). Вам нужно было спроектировать? Можно ли вообще спроектировать?

R2:=πdrinker,bar,beer(FREQUENT⨝SELL) 

Это строки, где FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price). Вам нужно было спроектировать? Можно ли вообще спроектировать?

R3:=πdrinker,bar(R1-R2) 

Это строка, где

FOR SOME beer, 
     Like(drinker, beer) AND Frequent(drinker, bar) 
    AND NOT FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price) 
Solution:= FREQUENT - R3 

Это строка, где

Frequent(drinker, bar) 
AND NOT FOR SOME beer, 
      Like(drinker, beer) AND Frequent(drinker, bar) 
     AND NOT FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price) 

Как я могу оправдать свои претензии?

Это

Frequent(drinker, bar) 
AND FOR ALL beer, 
      NOT (Like(drinker, beer) AND Frequent(drinker, bar)) 
     OR FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price) 

Т.е

Frequent(drinker, bar) 
AND FOR ALL beer, 
      Like(drinker, beer) AND Frequent(drinker, bar) 
     IMPLIES FOR SOME price, Frequent(drinker, bar) AND Sell(bar, beer, price) 

Т.е

Frequent(drinker, bar) 
AND FOR ALL beer, 
     Like(drinker, beer) IMPLIES FOR SOME price, Sell(bar, beer, price) 

Почему?

Это строка, где пьющийбара посещает и для всего пива, если пьет любит пиво-то-бар продает-пиво в какой-то-цене. Это верно?

Если R & S владением строки, в которых R(...) & S(...) соответственно, то, что же отношение держит строки, где R(...) OR S(...) выглядеть? Как вы могли рассчитать это? Почему это проблема? Что делать, если R & S такие же атрибуты в ...? Как насчет IMPLIES?

Какие эвристики мы можем использовать, чтобы начать с чего-то простого, как окончательного неформального выражения и попытаться получить эти (Like с с теми) drinker s & bar S вниз в FOR ALL и IMPLIES? Т.е. начать с простой версии и работать над созданием моих переписаний?

механический способ сделать это, то, что всегда работает, использует предваренные нормальную форму, как Кодд используются при доказательстве теоремы Кодда, которая говорит, что (форма) реляционная алгебра может выразить все, что (форму) реляционное исчисление.

Смежные вопросы