For faster navigation, this Iframe is preloading the Wikiwand page for 関係 (データベース).

関係 (データベース)

この記事に雑多な内容を羅列した節があります。 事項を箇条書きで列挙しただけの節は、本文として組み入れるか、または整理・除去する必要があります。(2015年12月)
関係 (relation) を含む関係モデルの概念

関係(かんけい、リレーション: relation)とは関係モデル(リレーショナルモデル)において、一つの見出しと0以上の同じ型の組 (タプル、行) の順序づけられていない集合からなるデータ構造のことである。

値としての関係を関係値 (relation value) といい、関係値を値としてもつ変数関係変数 (relvar, relation variable) という。

関係データベースデータベース言語であるSQL では、関係変数とほぼ同じ意味で (テーブル) という用語が使われている。文脈によって、関係変数を関係と呼ぶこともあり、また関係値を関係と呼ぶこともある。

その他、データベースにおける関係には以下のことが言える。

  • 関係変数が値としてもつ関係値は、時間とともに変化する。
  • 関係変数はデータ定義言語 (DDL) を使って定義することができる。
  • 見出し (heading) は、特定の属性 (列、カラム) の順序づけられていない集合である。
  • 関係値を構成する組の集合を本体 (body) という。
  • すなわち関係値は、見出しと本体から構成されている。
  • 組は、0以上の属性の集合からなるデータ構造である。
  • 属性は、属性名と定義域の名称のペアである。
  • 定義域は、データ型と同じ意味と考えてよい。
  • 属性は、その定義域に適合するなんらかの属性値をもつ。
  • 属性値は、スカラ値[要曖昧さ回避]もしくはより複雑な構造をもつ値である。
  • 見出しを構成する属性の数を、次数 (degree) という。
  • 関係値の次数は、0もしくは正の整数である。
  • 次数が n である関係値を n 関係 (n-ary relation) という。
  • 関係値を構成する組の数を濃度 (cardinality) という。
  • 関係値の濃度は、0もしくは正の整数である。
  • 関係値では、重複する組は存在しない。
  • 関係値を構成するおのおのの組は特定の一つ以上の属性の集合で識別される。
  • この属性集合を候補キー (candidate key) という。

[編集]

複数の属性 (列、カラム) から構成される一つの見出しの例を示す。

3つの属性から構成される見出しの例
属性名 : 定義域
ID : 整数型
氏名 : 文字列型
住所 : 文字列型

この見出しとこの見出しに適合する複数の組 (タプル、行) から構成される一つの関係値の例を示す。 この例では、便宜的に関係値を視覚的に表 (テーブル) で示している。

同じ型の組から構成される実際の関係値の例
ID : 整数型 氏名 : 文字列型 住所 : 文字列型
102 "ヒュー・ダーウェン" "沖縄県那覇市"
202 "エドガー・F・コッド" "宮城県仙台市"
104 "クリス・デイト" "熊本県熊本市"
152 "マイケル・ストーンブレーカー" "沖縄県沖縄市"

この例の関係値には、同じ型の組が4つ含まれている。 先述したように、見出しを構成する属性は順序づけられていない。 つまり、この例の見出しで「氏名の右側に住所がある」と述べることはまちがいであり、「住所は3番目の属性である」と述べることもまちがいである。 同じく先述したように、関係を構成する組は順序づけられていない。 つまり、この例の関係値で「 "マイケル・ストーンブレーカー" の組の前に "クリス・デイト" の組がある」と述べることはまちがいであり、「 "エドガー・F・コッド" の組は2番目の組である」と述べることもまちがいである。

基底関係変数と導出関係変数

[編集]

関係変数には、基底関係変数と導出関係変数の、2つの種類がある。 関係変数に、関係代数あるいは関係論理の式を適用すると、新たに一つの関係値を導出することができる。

基底関係変数 (base relation variable) は、どの関係変数からも導出されていない、元になる関係変数をいう。 関係データベースデータベース言語 SQL では、基底関係変数とほぼ同じ意味で基底 (基底テーブル) という用語が使われている。 基底関係変数は、データ定義言語 (DDL) を使って定義することができる。 SQL では、CREATE TABLE 構文で基底関係変数を次のように定義することができる。

CREATE TABLE 人名録 (
 ID INTEGER,
 氏名 CHAR(40),
 住所 CHAR(200),
 PRIMARY KEY (ID)
)

導出関係変数 (derived relation variable) は、一つもしくは複数の関係変数を元にして関係代数あるいは関係論理の式を適用して導出された、関係変数をいう。 導出関係変数とほぼ同じ意味でビューという用語が使われている。 導出関係変数は、データ定義言語 (DDL) を使って定義することができる。 SQL では、CREATE VIEW 構文で導出関係変数を次のように定義することができる。

CREATE VIEW 沖縄県人名録 AS (
 SELECT ID, 氏名, 住所
  FROM 人名録
  WHERE 住所 LIKE '沖縄県%'
)

関連項目

[編集]

参考文献

[編集]
出典は列挙するだけでなく、脚注などを用いてどの記述の情報源であるかを明記してください。 記事の信頼性向上にご協力をお願いいたします。(2023年12月)
  • 『データベースシステム概論 原著第6版』丸善、東京、1997年。ISBN 4-621-04276-9 
    Introduction to Database Systems. Addison–Wesley. (1994). ISBN 978-0201824582 
  • 『データベース実践講義—エンジニアのためのリレーショナル理論』オライリー・ジャパン、東京、2006年。ISBN 4-87311-275-3 
    Database in Depth : Relational Theory for Practitioners. 北京: O'Reilly Media. (2005). ISBN 0596100124 
{{bottomLinkPreText}} {{bottomLinkText}}
関係 (データベース)
Listen to this article

This browser is not supported by Wikiwand :(
Wikiwand requires a browser with modern capabilities in order to provide you with the best reading experience.
Please download and use one of the following browsers:

This article was just edited, click to reload
This article has been deleted on Wikipedia (Why?)

Back to homepage

Please click Add in the dialog above
Please click Allow in the top-left corner,
then click Install Now in the dialog
Please click Open in the download dialog,
then click Install
Please click the "Downloads" icon in the Safari toolbar, open the first download in the list,
then click Install
{{::$root.activation.text}}

Install Wikiwand

Install on Chrome Install on Firefox
Don't forget to rate us

Tell your friends about Wikiwand!

Gmail Facebook Twitter Link

Enjoying Wikiwand?

Tell your friends and spread the love:
Share on Gmail Share on Facebook Share on Twitter Share on Buffer

Our magic isn't perfect

You can help our automatic cover photo selection by reporting an unsuitable photo.

This photo is visually disturbing This photo is not a good choice

Thank you for helping!


Your input will affect cover photo selection, along with input from other users.

X

Get ready for Wikiwand 2.0 🎉! the new version arrives on September 1st! Don't want to wait?