• ベストアンサー

リレーショナルデータベースとは

リレーショナルデータベースを、全くパソコン初心者の方に説明する必要が出てきました・・・。 なるべく簡潔で、わかりやすい例を探しているのですが わかりません。どうしても複雑になってしまうのです。 リレーショナルデータベースを全くパソコン初心者にわかってもらう いい例えをお持ちの方が、いらっしゃいましたらご教授お願いします。 表を使用するものが、リレーショナルデータベースです。といっているのですが。 いまいちのようで・・・。

質問者が選んだベストアンサー

  • ベストアンサー
  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.6

リレー競争(relay)とリレーション(relate)とを結び付けるのは 無理がありそう。 ひとつのデータと別のデータを各々のデータの中の特定の値で関連 付ける(別データを参照したりグループ化できる等)ことができる データベース、でいいのでは? 例えば学校の生徒名簿なら、カード型データベースでいえば一つ一 つのデータは個人データですけど、クラス名をリレーショナルキー とすれば、あるクラスには何人在籍しているとかなどキーでグルー プ化して計算できたりします。 表は関係無いです。

ShiftTail
質問者

お礼

情報ありがとうございます。 >ひとつのデータと別のデータを各々のデータの中の特定の値で関連 付ける(別データを参照したりグループ化できる等)ことができる データベース、でいいのでは? これで説明しようと思います。

その他の回答 (5)

  • kuroizell
  • ベストアンサー率55% (95/170)
回答No.5

> ただ、単にリレーショナルデータベースとはどういうものなのか?を伝えないと駄目なのです。 「Excelデータベースで出来ないことや問題点を解決するもの」程度に 認識してもらえば良いのではないでしょうか。 それだけでは足りないのなら、 全くの初心者なら問題にすらぶち当たっていないでしょうから、 まずは諸種問題点から説明する。 それら問題にぶち当たって、初めてソリューションとしてのRDBの出番です。 そして問題解決のためのRDB使用にあたり、厳しいルール(正規化)に従う必要がある。 よって、ルールに従って各種データはこのような形となる(第n正規形とかRDB構築に取り組まない人には不要)。 唯一無二であることを示すためのアイデンティティとして、主キー(ID)が必要になる。 最終的には主キーに従属するデータを持たせる、これがデータ同士の関連性、リレーションである。 これにより、前述の諸種問題は解決できる。 ・・・うん、やっぱり分からないでしょうね。

ShiftTail
質問者

お礼

情報がありがとうございます。 >・・・うん、やっぱり分からないでしょうね。 ちょっと難しいです。 >全くの初心者なら問題にすらぶち当たっていないでしょうから、 まずは諸種問題点から説明する。 この方式で様子見をしてみることにします。

  • aton
  • ベストアンサー率47% (160/334)
回答No.4

個人的には No.1 の回答者の方に1票。 「誰に」「どういう目的で」が明らかでないと,本来的にはどう説明すればいいかは決められないと思います。 今回,「誰に」は「全くパソコン初心者の方に」ということですが,「どういう目的で」の方がはっきりしていません。ShiftTailさんは「単にリレーショナルデータベースとはどういうものなのか?を伝えないと駄目」と書かれていますが,教えられる側の方が「どういう時にその知識を活用したい」のかというようなこともわからないのでしょうか? 極論「試験に受かる/いい成績を取るため」でもいいので,なにかそういう活用シーンというのがあるはずだと思うのですが。それがないのであれば,逆にいうとその知識は不要なのではないでしょうか? とにかく,基本的に何かを説明するということは,「正確さ」と「わかりやすさ」のトレード・オフであり,そのバランスは,「誰に」「どういう目的で」という要素で変わってきます。 一応「初心者」向けに,「正確さ」より「わかりやすさ」を優先した私なりの説明を以下に述べておきます。「目的」がわからないので,本当に最低限の説明になっています。 ・「データベース」とは,たくさんのデータの集まり。 ・「リレーショナル・データベース」とは,表形式で表されるデータの集まり。ただし,同じ表の中に同じデータは1つしかないことが保証されている。 以下は質問が出たときの補足。 ・「表形式」というのは,「行」と「列」で表現されるという事。リレーショナル・データベースの世界では,データを「行」,データの項目を「列」として扱う事になっている。 例:項目「番号」が「11」,項目「名前」が「佐藤」,項目「年齢」が「16」のデータ  列  列  列  ↓  ↓  ↓ +——+——+——+ |番号|名前|年齢| +——+——+——+ |11 |佐藤|16 |←行=データ +——+——+——+ ・「同じ表の中に同じデータは1つしかない」については,リレーショナル・データベースになっている表となっていない表の,2つの表を例に説明する。 リレーショナルでない例: +————+——+ |氏名  |年齢| +————+——+ |佐藤一郎|16 | +————+——+ |鈴木二郎|16 | +————+——+ |佐藤一郎|16 | +————+——+ リレーショナルな例: +——+————+——+ |番号|氏名  |年齢| +——+————+——+ |11 |佐藤一郎|16 | +——+————+——+ |12 |鈴木二郎|16 | +——+————+——+ |13 |佐藤一郎|16 | +——+————+——+ 同姓同名で年齢が同じ人も,番号という項目を持つことで識別できる。 リレーショナル・データベースでは,上の表に,もう一行「番号」が「11」,「氏名」が「佐藤一郎」,「年齢」が「16」の行を追加しようとすると拒否される。 さらに詳細な質問のための説明は以下。 ・では「番号」が「11」,「氏名」が「佐藤一郎」,「年齢」が「17」の行を追加するのは可能か? →このままだと可能。それで困る場合は,「主キー」を指定する。「主キー」は,データが重複しているかどうかを判断するのに利用する項目のこと。このばあい,主キーに「番号」を指定すると,「番号」が同じ行は追加できなくなる。 ・なぜ重複を排除するのか その方が検索や更新がしやすくなるから。いい加減面倒になったので,例は質問者ご自身で考えてみてください。 ・各行の各項目にはどういう値が入れられるのか 一般的なリレーショナル・データベースでは数値または文字のどちらかしか入れられない。 109→OK 山田太郎→OK 3.14159→OK 1, 2, 180→NG(複数の値を一つのセルに入れる事はできない) 109, 山田太郎→NG(複数種類/複数の値を一つのセルに入れる事はできない) ちなみに,「リレーショナル・データベース」とは,上で説明した「重複のない表」を表す数学用語「リレーション(relation)」を扱うデータベースという意味です。数学用語「リレーション(relation)」の日本語訳は「関係」ですが,これは通常の意味の「関係」とは全く異なる定義を持つ数学用語であり,上に書いた通り,「重複のない表」を指す名詞です。 http://ja.wikipedia.org/wiki/%E9%96%A2%E4%BF%82_(%E3%83%87%E3%83%BC%E3%82%BF%E3%83%99%E3%83%BC%E3%82%B9)

ShiftTail
質問者

お礼

情報ありがとうございます。 やっぱりこれだけの説明が要りますよね・・・。 行の重複とかは一通り説明したのですが。 やってもらうしかないですかね。

  • takuranke
  • ベストアンサー率31% (3923/12455)
回答No.3

ある項目やレコードを関連付けることで、別々のデータベース群を連携させ情報抽出等が出来るようにしたデータベース。 リレーショナルは関係や相関的なという意味です。 データは行と列から構成される表形式で表します。 列は各項目を表し、行はデータのレコードを表します。 各データ群は表と表の関係によって関連付けられ、 構造化問い合わせ言語(SQL)によりユーザーの目的に応じて操作できます。 大雑把な例えですが、顧客管理のデータ群と販売情報のデータ群があったとして、 顧客番号という項目で関連付けをすることで、双方のデータ群と連携が出来ます。 階層型の場合は、ツリー構造で、ある1つのデータが他の複数のデータに対して、親子の関係をもつので、1つのデータを探す手順(アクセスするルート)は1通りしか存在しません。 なのででリレーションは出来ません。

ShiftTail
質問者

お礼

情報ありがとうございます。 >大雑把な例えですが、顧客管理のデータ群と販売情報のデータ群があったとして、 顧客番号という項目で関連付けをすることで、双方のデータ群と連携が出来ます。 ちょっと例を作成してこれで説明してみようと思います。

回答No.2

>表を使用するものが、リレーショナルデータベースです。といっているのですが 間違いです。 データベースはどれだって表になります。複数の表を関連させられるがリレーショナルデータベースです。 運動会のリレーとか箱根駅伝とか思い浮かべてください。これがまさにリレーです。このときバトンとかタスキを受け渡します。これを受け渡すことによりリレーが成立するのです。バトンとかタスキとかがあってリレーになるのです。 別々の表をバトンとかタスキで繋ぐことができるのがリレーのようになってるデータベースと言うことでリレーショナルデータベースと言います。略してRDBです。

ShiftTail
質問者

お礼

すばらしい例を教えて頂き、ありがとうございます。 ちょっといくつかお聞きさせて頂ければと思います。 >複数の表を関連させられるがリレーショナルデータベース そのとおりです。申し訳ありません。 訂正ありがとうございます。 >運動会のリレーとか箱根駅伝とか思い浮かべてください。これがまさにリレーです。このときバトンとかタスキを受け渡します。これを受け渡すことによりリレーが成立するのです。 これは、リレーションのことと認識させて頂きましたが問題ないでしょうか? >別々の表をバトンとかタスキで繋ぐことができるのがリレーのようになってるデータベースとと言うことでリレーショナルデータベースと言います。略してRDBです。 リレーションを使えることの出来るデータベースがリレーショナルデータベースと言います。で認識させて頂きましたが問題ないでしょうか? 最後に  階層型DBでは、リレーション使えないのでしょうか?

回答No.1

何のためにその方に説明するのかによって、答えは変わると思いますが… とりあえず、概念の説明をしようとせず、具体例だけ示して「こういうのを(リレーショナル)データベースっていうんだよ」と教えるのが良いと思います。 例えばクラス名簿の例で、「学年」「クラス」「出席番号」「性別」「生徒氏名」の一覧表を見せます。 その上で ・「○年○組の出席番号○番の生徒の氏名」を調べる例 ・「○年○組の男子生徒の氏名の一覧」を取得する例 を説明し、データベースのselectの概念を大雑把に把握してもらいます。 さらに、「学年」「クラス」「担任」の一覧表を用意し、 ・「○○○○という氏名の生徒の担任の名前」を調べる例 を説明し、「リレーション」の概念を大雑把に把握してもらいます。 とりあえずこれだけ説明して、後は本人から質問してもらって、徐々に理解してもらうのが良いのでは。

ShiftTail
質問者

お礼

>何のためにその方に説明するのかによって、答えは変わると思いますが… ただ、単にリレーショナルデータベースとはどういうものなのか?を伝えないと駄目なのです。 早期ご回答ありがとうございます。 例までつけて頂きありがとうございます。 例を説明するのにselectの話が若干必要になり 理解できなかった場合、そこでパニックを起こすと思います。 そこで挫けてしまうと、 例を説明しても効力が無いように思います。 こちらでももう少し考えて見ます。 ご意見ありがとうございました。

関連するQ&A

  • リレーショナルデータベースにSQLを保存?

    コンピューターを使うには、データ(電子データ)が必要です。CPU、メモリー、グラフィックボード、チップセット、電源、ディスプレーなどが充実していても、データが空なら単なる鉄の塊で、飾るだけです。 データを保存するにはデータベースが必要と聞いた事があります。本当でしょうか?確かに、データベースにデータを保存する事が多そうですが、データベース以外にもデータの保存スペースがある気がします。私の記憶が確かなら、、キャッシュメモリーはデータベースの構成要素の一であり、キャッシュメモリーにデータがあればデータベースにデータがあるという事と聞いた気がする。 色々と記憶が曖昧で、混乱して、このように質問してます。 データベースにも色々ありますが、その王様はリレーショナルデータベースだとよく聞きます。リレーショナルデータベースは、ありとあらゆるデータを保存できて、何にでも活用できるそうです。本当でしょうか? 例えば、リレーショナルデータベースの操作にSQLが使われますが、このプログラム文をリレーショナルデータベースに保存しますでしょうか?私の認識だと、SQLはテキスト形式のSQLファイルで、マイドキュメントなどのフォルダーに保存します。 SQLの他、小説、写真、音声、ビデオ、3次元CADなども、リレーショナルデータベースに保存しますでしょうか? 私の認識だと、リレーショナルデータベースは表(2次元マトリクス)の集合です。表はセルで作られていて、行×列に配置しています。セル1つには、1行文字列、実数(整数と有限少数)、時刻、NULLだけが保存できます。これだと自由度や用途が狭く限られそうですが、セルを膨大に用意できて、これで幅広い自由度を得ます。 リレーショナルデータベースにも小説を保存できる。その方法は、小説を30字区切りで分割し、主キーを振ること。1つのセルに30字の文を保存し、その下に次の30字の文を保存し、これを終わりまで繰り返します。正しいでしょうか? リレーショナルデータベースにも写真を保存できる。先ず、赤表、青表、緑表の3つを用意する。各表のマトリクスサイズは膨大で写真のピクセルがセルに対応し、行×列に配置します。各セルには画素3原色の強度数(0~255だとgif形式だっけ?)を保存する。その後、赤青緑の3表を合成し、ビットマップで出力します。正しいでしょうか? リレーショナルデータベースは銀行でよく使われていて、お金の出入りや顧客管理でリレーショナルデータベースは大活躍しているそうです。だけど、本当はもっと用途が広い? フォルダファイルシステムとデータベースは別物と聞いた事があります。一方で、フォルダファイルシステムの基本はデータベースで、データベースに何かアプリを組み合わせてフォルダファイルシステムが形成されているとも聞いた事があります。どっちが正しいでしょう?どっちも間違い?

  • リレーショナル型データベースについて

     このような問題についてです。  以下に示す学生の成績表をリレーショナル型データベースで管理することとした。第3正規化の結果できあがるリレーションのスキーマを表の下に示した「スキーマの表現例」に倣って記述しなさい(1つとは限らない)。正規化されたリレーションスキーマの名称は適切なものを指定すること。また、主キーには○を施すこと。なお、学籍番号、科目番号は、それぞれ学生と科目を一意に識別する値である。学生は1つの学部に所属している。学部名は一意であり、所在地も学部によって一意に決まっているものとする。担当科目教員も課目によって一意に決まっているものとする。 成績表 (学籍番号、学生氏名、所属学部名、学部所在地、科目番号、科目名、担当教員名、成績) ※スキーマ表現例  商品を表すリレーションが3つの属性、商品コード、商品名、価格から構成されているとき、「商品(商品コード、商品名、価格)」と表す。ここで、商品コードが主キーである。 自分なりに考えた答えがこれです。 学生(○学籍番号、学生指名、所属学部名) 学部(○所属学部名、学部所在地) 科目(○科目番号、科目名、担当教員名) 成績(○学籍番号、○科目番号、成績) になりました。これでよいでしょうか。よろしくお願いします。

  • ACCESSで、簡単なカード型データベース

    ACCESSで、簡単なカード型データベース  WindowsXPのもとで、  ACCESS2002  を動かしているのです。  何とか使いこなせるように四苦八苦しているのですが、なかなかマスターできません。  ACCESSには、作成するサンプル練習問題が作ってあってこの順序通りを入力すれば、データベースを作れるようになっています。  しかし、この入力が何を意味して、どのような意図で、この入力をしているのか分かりにくく、途中で入力をあきらめてしまうか、中断してしまいます。  意味が理解できず、また、言葉が理解できないです。  できる人には、まだ、努力が足りないの一言ですが、作りたいのは、練習問題のような複雑なデータベースではなく、ひとつのデータベースのみの 簡単なカード型データベース を作りたいのです。  もともと、ACCESSが、カード型データベースを意図したものでなく、 リレーショナルデータベース を意図して作成されているので、どうしても、練習問題も、複数のデータベースとの関係を関係付ける説明になります。いろいろの複数のデータベースを関連付けることができます関連付けのいろいろな機能を使用できます。  となります。  簡単なひとつのデータベースのみの 簡単なカード型データベース の作り方がホームページに解説があれば、初心者には、これをなぞればよく、導入しやすい便利だと考えるしだいです。  作るうえで、何か要領がありましたら、よろしく教授方お願いします。  敬具

  • データベースソフトの使い勝手

    私は管理工学研究所の「桐」というリレーショナル型データベースソフトを少しだけ駆使して業務に使用しています。 今まで、データベースソフトは「桐」以外使用したことがなく、本当に「桐」で良いのか分かりません。 どなたか、「桐」と「ACCESS」の両ソフトを使用した経験のある方、両ソフトの使い勝手や機能面について簡単に教えてください。 また、「ACCESS」しか使用したことがない方も「ACCESS」のすぐれているなと思うことを教えてください。

  • RBDの反対語は?□DB??

    RDB、リレーショナル・データベースの反対語があったと思うのですが、 何だったでしょうか? RDBが関係データベース、表形式のデータベースと説明され、 ○DBは、カード型のデータベース。という内容だったと思うのですが。 他に、ツリー型のデータベース等もあったけど、 現在の主流はRDBです。というのがかつての説明だったのですが そんな言葉すらもう、見なくなってしまいましたね。

  • データベースに何を使うか

    こんにちは、よろしくお願いします。 VB2005+AccessでWindowsアプリをはじめて作りました。 このアプリはデータベースがAccessなのでスタンドアロン形式 として開発しました。(初めてのプログラミングです。) 次に、2~5台くらいまでのパソコンで使えるようなアプリを 開発したいと思っているのですが、 データベースに何を使ったら良いのかわかりません。 パソコンに、Microsoft SQL Server 2005がプログラムメニューに あるのですが、これが利用できるのでしょうか? 利用できるのなら使いたいのですが、 色々と調べていたら、SQLServerの価格表があり、高いものは 300万とか書いてあり、びっくりしました。 上記を使うと開発者やユーザーに何か料金が必要なのでしょうか? ExpressEditionは無料、とありましたが制約が多くて 使にくかったらどうしようかと思い、不安です。 Oracleも無料とありましたが、Windowsアプリに利用するにあたって 何も問題はないのでしょうか? 経験者の方、おすすめデータベースのアドバイスがありましたらお願い致します。 参考サイトや書籍などの情報がありましたらあわせてお願い致します。

  • MySQLデータベースについて

    データベースについて詳しい方にお聞きしたい事があります。 初心者なので書いている内容におかしな点もあるかと思いますが、よろしくお願いします。 5年ほど前のJavaを習っていて、簡単なデータベースを作ったことはあります。 □現在、会社が違うレンタルサーバーを一つずつ借りています。 A社のサーバー上で作成したデータベースをB社のサーバー上に公開しているサイトから呼び出し、テーブルを一覧表示できるのでしょうか? □初心者がデータベースを作成するにはphpMyAdminを使用するのが一番良いでしょうか? 使い方を検索してみたらちょっと難しそうですね。 Javaでデータベースの勉強をしていた時はあらかじめ作ったフォームにデータを入力していくだけだったので、同じような感じのシステムはないかなと思いました。 □現在使用しているサーバーはMySQLが5つ使えると書いています。 既にWordPressでブログ開設していて4つ使用しています。残りは一つ。 野球チームのデータベースを作成しようと思っているのですが、これまでの試合の記録のデータ、これまでの選手のデータのデータベースを作成したいと思っています。 MySQLは残り一つですが、この二つのデータベースを作る事は可能なのでしょうか?二つ必要ですか? □スマホのサイトも作成しているんですが、PCサイトと同様にデータベースに接続し、一覧表示できるのでしょうか? スマホでPHPが使えるのかなと思ったので。 ご存知の方いらっしゃいましたらご教示ください。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • データベース変換

    生産計画表などのエクセルシートから必要なものだけ抽出してデータベース化したいのですが どのようにしたらよいのでしょうか? 初歩的な質問ですいませんが、どなたか詳しい方教えて下さい

  • データベースアプリFileMakerについて

    データベースアプリFileMaker Go 12 for iPhoneについて質問があります。 私は現在FileMaker Pro11を使用しているのですが、このソフトで作ったデータベースをFileMaker Go 12 for iPhoneで閲覧する事は不可能なのでしょうか。 説明を見る限り同一バージョンのみの対応しているような説明だったのですが、FileMaker Go 12 for iPhoneでデータベースを見たい場合はFileMaker Pro12が必要なのでしょうか。 FileMaker Go 12 for iPhoneは無料配布されていますがFileMaker Go 11 for iPhoneは有料で2000円でしたのでもし使用可能ならFileMaker Go 12 for iPhoneを使いたいのです。 実際に使ったことある方がいらっしゃいましたら回答をよろしくおねがいします。 もし裏技的な何かで閲覧が出来るような方法などがあればそれもご教授願いたいです。

  • メモリデータベースについて

    メモリデータベースについて教えてください。 名前の通り、メモリ上のデータベースだと思いますが、 アクセスが高速であるということを聞いて少し調べていますが、いまいち理解できていません。 サンプルがありまして、VB.NETで掲載されているサイトを発見したのですが、クラスを仕様してメモリ上に表を作成するコードでした。 こちらはVB6で、メモリデータベースを実装したいと考えております。 たとえばSQLServerでメモリデータベース機能。 ORACLEでメモリデータベース機能などは無いのでしょうか? それとも市販(メモリデータベース)を購入して実装しなければ出来ないのでしょうか? MicrosoftADOなどで実現など出来ないのでしょうか? 分かる方がいらっしゃいましたら御教授ください。