関係論理のソースを表示
←
関係論理
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
'''関係論理''' (かんけいろんり、関係計算、リレーショナル論理、リレーショナル計算、[[英語|英]]: relational calculus) は、[[関係データベース]]の[[関係モデル]] (リレーショナルモデル) において、宣言的な方法で関係 (リレーション、[[表 (データベース)|表]]、[[テーブル (情報)|テーブル]]) として表現されたデータを扱う、[[コンピュータ科学]]における演算の体系である。 関係論理には、[[組 (データベース)|組]]関係論理 ([[組 (データベース)|タプル]]関係論理) と[[定義域 (データベース)|定義域]]関係論理とがある。 関係として表現されたデータに対して行う演算体系としては、[[関係代数 (関係モデル)|関係代数]]とこの項目で説明する関係論理 (関係計算) の2種類が知られている。 関係論理は宣言的にデータを扱う演算体系であり、関係代数が手続き的にデータを扱うのとは対照的である。 組関係論理と定義域関係論理の表現能力は同等である。 関係論理を[[実装]]した[[データベース言語]] ([[問い合わせ言語]]) としては、[[QUEL]] や [[SQL]]、[[Tutorial D]] などが挙げられる。 ただし SQL については、関係論理を完全な形で実装していないとして批判する意見がある。 == 関係モデル == [[画像:Relational model concepts_Version_Japanese.png|thumbnail|right|360px|[[関係モデル]]の概念]] {{main|関係モデル}} 関係論理は[[関係モデル]]に基づく[[関係データベース]]の[[データベース言語]] ([[問い合わせ言語]]) であるため、最初に関係モデルを簡単に定義する。 [[関係 (データベース)|関係]]は、一つの見出しと0以上の同じ型の組の順序づけられていない[[集合]]からなる[[データ構造]]である。 値としての関係を、関係値という。 関係値を値としてもつ[[変数 (プログラミング)|変数]]を関係変数 (relvar) という。 関係変数が値としてもつ関係値は、時間とともに変化する。 関係変数は[[データ定義言語]] (DDL) を使って定義することができる。 見出しは、特定の属性の順序づけられていない集合である。 関係値を構成する組の集合を本体という。 すなわち関係値は、見出しと本体から構成されている。 [[組 (データベース)|組 (タプル)]] は、0以上の属性の集合からなるデータ構造である。 [[属性 (データベース)|属性]]は、属性名と[[定義域 (データベース)|定義域]]の名称のペアである。 定義域は、[[データ型]]と同じ意味と考えてよい。 属性は、その定義域に適合するなんらかの属性値をもつ。 属性値は、[[スカラー|スカラ値]]{{要曖昧さ回避|date=2021年11月}}もしくはより複雑な構造をもつ値である。 関係値を構成するおのおのの組は特定の一つ以上の属性の集合で識別される。 この属性集合を[[候補キー]]という。 こうした関係モデルの概念は数学的に定義されるが、既存のデータベースの[[実装]]はこうした定義に厳密に準拠しているわけではない。 [[表 (データベース)|表 (テーブル)]] は、関係の視覚的表現として受け容れられている。 組は行の概念に似ている。 == 関係代数との対比と関係完備 == 例えば[[関係代数 (関係モデル)|関係代数]]では、書籍データベースから次の手順で、特定の書名の書籍を在庫としてもつ書店の店名と電話番号を問い合わせるであろう。 # 書籍関係と書店関係を書店IDで[[関係代数 (関係モデル)#自然結合|結合]]する。 # 結合して生成された関係を指定された書名で[[関係代数 (関係モデル)#制限|制限]]する。 # 制限して生成された関係を店名と電話番号で[[関係代数 (関係モデル)#射影|射影]]する。 この例の問い合わせは関係論理では次のような宣言的に定式化できる。 : 書籍データベースにおいて、書籍関係と書店関係のそれぞれの書店IDが同一であるものとし、指定された書名をもつ店名と電話番号を取得する。 関係代数と関係論理は互いに等価である。 関係代数で表現された式は、等価な関係論理の式で表現することができる。 逆に関係論理で表現された式も、等価な関係代数の式で表現することができる。 関係モデルを考案した[[エドガー・F・コッド]]は、関係[[データベース言語]]の表現能力について'''関係完備'''という用語を定義した。 関係完備とは、コッドが提唱した限定のもとで、[[一階述語論理]]に関して完全な言語であることを意味する。 関係論理と関係代数は関係完備である。 == 組関係論理 == [[組 (データベース)|組]]関係論理 ([[組 (データベース)|タプル]]関係論理) は[[エドガー・F・コッド]]により[[関係モデル]]の構成要素として考案された。 組関係論理を発想の基として[[データベース言語]] ([[問い合わせ言語]]) [[QUEL]]と[[SQL]]が設計された。 SQLは、コッドの関係モデルと関係論理に忠実に準拠して設計されていないとして、批判を受けることがある。 しかしSQLは2008年現在ほとんど全ての[[関係データベース管理システム]] (RDBMS) のデータベース言語として採用されている。 組関係論理は、''{t | φ(t)}'' の形式で表される。 ここで ''t'' は組変数である。 φ はどのように条件づけるかを示す式である。 データベース述語は ''R(t)'' もしくは ''t∈R'' として記述される。 組関係論理で使われる[[演算 (数学)|演算子]]は次のとおりである。 論理演算子 * ∧ (and) * ∨ (or) * ¬ (not) * ∃ ([[存在記号]]) * ∀ ([[全称記号]]) 存在記号と全称記号は変数を束縛することができる。 === 組関係論理の例 === 顧客がいる場所: * ''{t.場所 | 顧客(t)}'' ブレーメン内のすべての顧客: * ''{t | 顧客(t) ∧ t.場所="ブレーメン"}'' 注文した顧客: * ''{t | 顧客(t) ∧ ∃s(注文(s) ∧ s.顧客番号=t.顧客番号)}'' 注文されていない商品: * ''{t | 商品(t) ∧ ¬∃s(注文(s) ∧ s.商品番号=t.商品番号)}'' 組関係論理において、結合の条件は明示的に記述される。 <!-- これに対し次で述べる定義域関係論理では (以下翻訳できませんでした) --> == 定義域関係論理 == [[定義域 (データベース)|定義域]]関係論理は Michel Lacroix と Alain Pirotte により考案されたといわれる<ref name="LP77">Michel Lacroix, Alain Pirotte: Domain-Oriented Relational Languages. VLDB 1977: 370-378</ref><!-- エドガー・F・コッドが考案したとする説もある -->。 定義域関係論理では、問い合わせは次のような形式になる。 : <math> {<X1, X2, ...., Xn> | p(<X1, X2, ...., Xn>) } </math> ここでおのおののX<sub>i</sub>は定義域変数もしくは定数である。 また p(<X1, X2, ...., Xn>) は関係論理の定式を示している。 問い合わせの結果は X<sub>i</sub> から X<sub>n</sub> で構成される組の集合であり、この集合は関係論理の定式が真となっている。 定義域関係論理の言語は組関係論理と同じ[[演算 (数学)|演算子]]を使う。 === 定義域関係論理の例 === A、B、C をそれぞれランク、名前、ID とする。 また D、E、F をそれぞれ名前、部署名、ID とする。 恒星船 USS エンタープライズ の全ての船長を問い合わせる: * ''{<A, B, C> | <A, B, C> in エンタープライズ ∧ A = "船長" }'' この例において、A、B、C は結果集合を示しており、またエンタープライズ関係に含まれる集合を示している。 エンタープライズの船員で星図作成の部署に属する人の名前を問い合わせる: * ''{<B> | ∃ A, C ( <A, B, C> in エンタープライズ ∧ ∃ D, E, F(<D, E, F> in 部署 ∧ F = C ∧ E = "星図作成" ))}'' この例では名前だけを問い合わせている。 <B>は属性名である。 F = C は要件である。 なぜなら、ここで必要なのはエンタープライズの船員でありかつ星図作成の部署に属する人の名前であるからである。 先の例の別の定義域関係論理式での表現例は次のようになる。 * ''{<B> | ∃ A, C (<A, B, C> in エンタープライズ ∧ ∃ D (<D, "星図作成", C> in 部署))}'' この例では、要求されたF定義域は定式内に直接位置づけられており、C定義域変数は部署の存在を問い合わせる際に再び使用されている。 なぜなら、C定義域変数はすでに船員のIDをもつからである。 == 参考文献 == * {{Cite book|和書 |last= |first= |author=C. J. Date |authorlink=クリス・デイト |coauthors=藤原譲ほか (訳) |year=1997 |title=データベースシステム概論 原著第6版 |publisher=[[丸善]] |location=東京 |id= |isbn=4-621-04276-9 }} *: {{cite book | first=Chrisopher J. | last=Date | authorlink=クリス・デイト | year=2004 | title=An Introduction to Database Systems | edition=8th | publisher=Addison Wesley | id=ISBN 0-321-19784-4 }} * {{Cite book|和書 |last= |first= |author=C. J. Date |authorlink= |coauthors=株式会社クイープ (訳) |year=2006 |title=データベース実践講義—エンジニアのためのリレーショナル理論 |publisher=[[オライリー・ジャパン]] |location=東京 |id= |isbn=4-87311-275-3 }} *: {{Cite book |last= |first= |author=C. J. Date |authorlink= |coauthors= |year=2005 |title=Database in Depth : Relational Theory for Practitioners |publisher=[[オライリーメディア|O'Reilly Media]] |location=北京 |id= |isbn=0596100124 }} * [[エドガー・F・コッド|Edgar F. Codd]]: [http://doi.acm.org/10.1145/362384.362685 A Relational Model of Data for Large Shared Data Banks]. ''Communications of the ACM'', 13(6):377–387, 1970. * Andreas Heuer, Gunter Saake: ''Datenbanken: Konzepte und Sprachen'', MITP Verlag, ISBN 3-8266-0619-1, S. 297 ff. == 脚注 == {{脚注ヘルプ}} <references/> {{Database}} {{DEFAULTSORT:かんけいろんり}} [[Category:論理計算]] [[Category:関係モデル]] [[Category:データベース]] [[Category:問い合わせ言語]] [[Category:データモデリング]]
このページで使用されているテンプレート:
テンプレート:Cite book
(
ソースを閲覧
)
テンプレート:Database
(
ソースを閲覧
)
テンプレート:Main
(
ソースを閲覧
)
テンプレート:脚注ヘルプ
(
ソースを閲覧
)
テンプレート:要曖昧さ回避
(
ソースを閲覧
)
関係論理
に戻る。
ナビゲーション メニュー
個人用ツール
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
ソースを閲覧
履歴表示
その他
検索
案内
メインページ
最近の更新
おまかせ表示
MediaWiki についてのヘルプ
特別ページ
ツール
リンク元
関連ページの更新状況
ページ情報