新しく質問する

リレーショナル代数

役に立った:1件
  • 質問者:garusu
  • 投稿日時:2007/12/28 00:54
  • 困り度:すぐに回答が欲しいです

本(著者名、署名、出版社名、価格)
出版社(出版社名。所在都道府県名)

の2つのリレーションから成り立つデータベースがあるとして
東京の出版社から本をだしている著者を求めるのにリレーショナル代数を用いると

((本*出版社)[出版社.所在都道府県='東京'])[本.著者名]ですよね?

ここで疑問に思うのですが出版社.所在都道府県って表現は所在都道府県でもよいのではないのでしょうか?データベースの中に唯一の属性ですし・・・

これは形式的なものなんでしょうか?

この質問への回答は締め切られました。
このQ&Aは役に立ちましたか?(役に立った:1件)

回答(4件)

  • 参考になった:0件
  • 回答者:tomo316
  • 回答日時:2007/12/28 17:04

>上記のような回答ですと自然結合は直積と同じものではないでしょうか?
わたしは同じだと思っているのですが?
自然結合は忘れてください。
(本*出版社 )は直積演算のことです。
したがって結果は合っていると思います。

通報する

  • 参考になった:0件
  • 回答者:tomo316
  • 回答日時:2007/12/28 12:16

ANo.2のものです。
変な書き方をしたので。


>自然結合は、共通属性について'='を行うから
自然結合は名前の通り、自然に条件無しでの結合です。


リレーショナル代数を扱いやすくしたものがSQLです。
実際のデータをイメージすれば、わかりやすいと思います。


著者名、署名、出版社名、価格
あ   aa  集英社  100
い   ii  講談社  100
う   uu  秋田書店 100

出版社
出版社名。所在都道府県名
集英社  東京
講談社  東京
秋田書店 秋田

リレーショナル代数:
(本*出版社)
SQL:select * from 本,出版社
結果:
あ   aa  集英社  100 集英社  東京
あ   aa  集英社  100 講談社  東京
あ   aa  集英社  100 秋田書店 秋田
い   ii  講談社  100 集英社  東京
い   ii  講談社  100 講談社  東京
い   ii  講談社  100 秋田書店 秋田
う   uu  秋田書店 100 集英社  東京
う   uu  秋田書店 100 講談社  東京
う   uu  秋田書店 100 秋田書店 秋田

リレーショナル代数:
((本*出版社)[出版社.所在都道府県='東京'])
SQL:select * from 本,出版社 where 出版社.所在都道府県='東京'
結果:
あ   aa  集英社  100 集英社  東京
あ   aa  集英社  100 講談社  東京
い   ii  講談社  100 集英社  東京
い   ii  講談社  100 講談社  東京


リレーショナル代数:
((本*出版社)[出版社.所在都道府県名θ'東京',出版社.出版社名θ本.出版社名])[本.著者名]

SQL:select 本.著者名 from 本,出版社 where 出版社.所在都道府県='東京' AND 出版社.出版社名 = 本.出版社名
結果:
aa
ii

通報する

この回答への補足

リレーショナル代数:
(本*出版社)
SQL:select * from 本,出版社
結果:
あ   aa  集英社  100 集英社  東京
あ   aa  集英社  100 講談社  東京
あ   aa  集英社  100 秋田書店 秋田
い   ii  講談社  100 集英社  東京
い   ii  講談社  100 講談社  東京
い   ii  講談社  100 秋田書店 秋田
う   uu  秋田書店 100 集英社  東京
う   uu  秋田書店 100 講談社  東京
う   uu  秋田書店 100 秋田書店 秋田

上記のような回答ですと自然結合は直積と同じものではないでしょうか?

  • 参考になった:0件
  • 回答者:tomo316
  • 回答日時:2007/12/28 12:07

>自然結合は、共通属性について'='を行うから
自然結合は名前の通り、自然に条件無しでの結合です。
リレーショナル代数を扱いやすくしたものがSQLです。
実際のデータをイメージすれば、わかりやすいと思います。


著者名、署名、出版社名、価格
あ   aa  集英社  100
い   ii  講談社  100
う   uu  秋田書店 100

出版社
出版社名。所在都道府県名
集英社  東京
講談社  東京
秋田書店 秋田

リレーショナル代数:
(本*出版社)
SQL:select * from 本,出版社
結果:
あ   aa  集英社  100 集英社  東京
あ   aa  集英社  100 講談社  東京
あ   aa  集英社  100 秋田書店 秋田
い   ii  講談社  100 集英社  東京
い   ii  講談社  100 講談社  東京
い   ii  講談社  100 秋田書店 秋田
う   uu  秋田書店 100 集英社  東京
う   uu  秋田書店 100 講談社  東京
う   uu  秋田書店 100 秋田書店 秋田

リレーショナル代数:
((本*出版社)[出版社.所在都道府県='東京'])
SQL:select * from 本,出版社 where 出版社.所在都道府県='東京'
結果:
あ   aa  集英社  100 集英社  東京
あ   aa  集英社  100 講談社  東京
い   ii  講談社  100 集英社  東京
い   ii  講談社  100 講談社  東京

リレーショナル代数:
((本*出版社)[出版社.所在都道府県='東京',出版社.出版社名 = 本.出版社名])
SQL:select 本.著者名 from 本,出版社 where 出版社.所在都道府県='東京'
AND 出版社.出版社名 = 本.出版社名
結果:
あ   aa  集英社  100 集英社  東京
い   ii  講談社  100 集英社  東京

リレーショナル代数:
((本*出版社)[出版社.所在都道府県名θ'東京',出版社.出版社名θ本.出版社名])[本.著者名]

SQL:select 本.著者名 from 本,出版社 where 出版社.所在都道府県='東京' AND 出版社.出版社名 = 本.出版社名
結果:
aa
ii

通報する

この回答への補足

>自然結合は名前の通り、自然に条件無しでの結合です。
>リレーショナル代数を扱いやすくしたものがSQLです。
>実際のデータをイメージすれば、わかりやすいと思います。

では直積とどう違うのですか?
ステップ(本*出版社)においては直積となんら変わらないと思うのですが・・・・

  • 参考になった:0件
  • 回答者:tomo316
  • 回答日時:2007/12/28 03:21

>((本*出版社)[出版社.所在都道府県='東京'])[本.著者名]ですよね?
間違っています。
出版社.出版社名 = 本.出版社名が抜けています。
積は自然結合なのでこの条件を入れないと1つの本にN件の東京の出版社がひついた形になります。

所在都道府県では無く所在都道府県名です。

((本*出版社)[出版社.所在都道府県名θ'東京',出版社.出版社名θ本.出版社名])[本.著者名]

>これは形式的なものなんでしょうか?
その通リです。

通報する

この回答への補足

自然結合は、共通属性について'='を行うから

出版社.出版社名 = 本.出版社名は不要ではないのでしょうか?

  
このQ&Aは役に立ちましたか?(役に立った:1件)

このページのトップへ