リレーショナルデータベースとその違いについて

このQ&Aのポイント
  • MySQLやPostgreSQL、Microsoft SQL ServerなどのリレーショナルデータベースとMicrosoft AccessやFileMaker Proなどのリレーショナルデータベースソフトの違いについてわかりません。それぞれの特徴や使い方、共有使用やネットワーク上での複数ユーザー利用について教えてください。
  • 私は以前、ロータスアプローチでデータベースを扱っており、リレーショナルデータベースの便利さに感動しました。しかし、アプローチでのファイル管理や解説本の不足、他のユーザーの少なさに不安を感じ、Accessに移行しました。Accessの扱いやすさやレポートの表現力に魅了されましたが、共有使用やネットワーク上での複数ユーザー利用には不安がありました。結局、MySQLやPostgreSQLが推奨される理由が知りたいです。
  • MySQLをダウンロードしてみましたが、使い方がわかりません。テーブルの作成やフォーム・レポートの作成方法がわかりません。リレーショナルデータベースについてわかりやすく教えていただきたいです。
回答を見る
  • ベストアンサー

MySQLとかPostgreSQLとかMicros

oft SQL ServerなどのリレーショナルデータベースとMicrosoft Accessやらファイルメーカープロ や昔あったロータスアプローチなどのリレーショナルデータベースソフトとの違いがよくわかりま せん。 私は最初ロータスアプローチでデータベースなるものに触れ、リレーショナルの便利さに感動し、 とはいえ素人レベルですが、それなりに仕事などに役立てていました。 ただ、アプローチというソフトは作成すると.defファイルやら.aprファイルやらごちゃごちゃファイル が自動的に出来上がることに何となくすっきりしないなぁと思ったこと、ならびに書店などでの 解説本の絶対的不足、まわりの使用者もほとんど皆無であることに不安を抱き、Accessに 移行しました(Access97)。 Accessは1つのファイルにデータ部分やオブジェクト(クエリーやフォームやレポートなど)が入って いるように見えるので扱いやすいこと、アプローチでリレーションの基礎的なことが分っていたので スムースに理解できたこと、解説本や掲示板などでの情報交換が容易なこと、また特にAccessの レポートの驚異的な表現力・自由度に心奪われ、しばらくどっぷりはまっていました。 ところがこのAccess、個人での使用では自分的には十分なのですが、共有使用・ネットワーク上で の複数ユーザーでの使用を試みた場合、かなりの確立で破損等が生じました。 会社内で複数使用を試みたのですが同時使用、特に同時5台以上になると使い物になりませんで した。自分の設計に問題があるとは思いますが、テーブル(データ)部分のみ分割したり、あれこれ したのですがやはり弱い。で、Accessはあくまで個人ユーザーレベルものであり複数ユーザーでの 利用を考えれば表記のMySQLやPostgreSQLなどを使用すべきという記事をネット上でよくみかけ ます。 で、とりあえずMySQLをダウンロードしてみたのですが、、、、何がなにやらさっぱりわかりません。 テーブルは?フォームはどうしたら作れるの?レポートは?何?? どなたかこれらRDBMSについてわかりやすく教えていただけないでしょうか? フォームやレポートはこれらにはないのでしょうか????

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

  • ベストアンサー
  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.2

RDBはIBMが最初に開発したデーターベースシステムです。 当時基本的にはプログラムを書いて情報を取り出し、設定はOSのコマンド(当時はコントロールランゲージ)で行いました。SQLというものを全面的に押し出したのはS38からだと思います。 その後UNIX用としてOracle、サイベースSQLServerが登場します。この時はPCのOSなんか貧弱でデーターベースを動かせるような物では無かったんですね。 マイクロソフトとIBMはDOSの次のバージョンとして共同でOS2を考えます。マイクロソフトではWindows New Technolgy(NT),IBMではOS2として発売します。UNIXやAS400に匹敵するOSを考えたのです。今のWindowsはXPからNTと同じものになってます。 これに載せるDBとしてMSがサイベースからライセンスを買い取ったのがMSSQLServerです。サイベースはまさかPCで業務処理なんかできるわけ無いと思い、競合することは無いと考えライセンスを売ったのです。まあ今ではUNIX並になりSQLSERVERと言えばMSだと思っている人の方が多い状況です。実はサイベースの優秀なテクノロジーが無ければMSSQLSERVERは存在してないのです。 でRDBに管理ツール(マネージメントシステム)をつけたものがRDBMSなのです。 DBにはロータスノーツのようなカード型DB、イメージやビデオを管理する階層型DB、さらにXMLデータを管理するXMLDBなどいろいろな種類があり目的に応じて使用するのです。 Accessは厳密にはRDBMSではなくISAMファイルという形式のものです。SQLをサポートして見た目上RDBに見せかけていますが基本的には大昔のファイル形式なんです。 まあRDBにはフォームやレポートなんて概念はありません。これらはプログラムで作成するものです。AccessはCaseToolのように簡単にフォームを作れる仕組みを、VBの技術から抜き出して作り提供したという事です。 通常のRDBはJavaの統合環境EcripsやMSのVisualStudio.NETのC#などで作ったプログラムからデーター制御します。 なぜこんな面倒なことをするのか?みんなAccessでいいじゃん。と思うでしょうが、大人数で利用するプログラムというのはたとえAccessのVBAで書いたとしても、膨大なコードになるのです。 それは高速処理、排他制御、ログイン制御などを記述する必要があるからです。Accessはこれらの処理を全部省いて簡単にしているが故個人利用しか出来ません。 たとえばテーブルのデーターを開いて好きな箇所を編集するなんてExcel見たいな処理を100人がやったら? どの人の処理が優先されてどこを書き込むか?全く制御無しに出来ないですよ。開いたときの情報は1秒後には他の人が変えてるかもしれません。1秒どころか0コンマ何秒です。逆に他の人が更新できないようにしてしまったら。一万件あったら一万件が一人のためにロックされその人が終わるまで待つことに。これでは仕事になりません。 つまりこれを頭を使って細かくプログラムで制御するように書くのです。コンピューターは自動では理解できない作業なんです。 印刷も同じ印刷するためにデーターを呼び出しているのか、編集するために呼び出しているのかこれをコンピューターに知らせる必要があるのです。どれだけ細かい作業か分かりますよね。 その他大きなRDBには更新失敗時には即時情報回復させる機能もあります。 まあ書き出したらきりがありません。RDBMSの管理だけでも食っていけるほど大変な作業なんです。プログラムもRDBが絡むだけで料金が跳ね上がります。世の中RDBは社会インフラを背負ってますので。 それとMSSQLSERVERもExpress版は無料。VisualStudio.NETも無料版があります。両方あれば一応無料で使えるシステムが組めるという事。制限はありますけどね。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4845/10255)
回答No.1

>フォームやレポートはこれらにはないのでしょうか???? 無いです。 MySQL、PostgreSQL、SQLserverなどはデータベース機能しか無いので、アプリケーションは別の手段で作る必要があります。これらはクライアントサーバー方式で、クライアントアプリケーションにデータベース機能をサービスします。複数アプリケーションプロセスからの同時使用は可能です。 ファイルメーカープロやAccessなどは、データベース機能とアプリケーション開発機能が一体化した物です。その代わりに複数ユーザからの同時使用は想定されていません。どちらかというと、データベースっぽい機能がおまけに付いているというイメージ。Excelに毛が生えた物というか。

関連するQ&A

  • Access2000で排他ロックをかけるには?

    こんにちは。 Access2000を複数のユーザーで使用したいのですが、 上手く排他ロックがかからなくて困っています。 使用状況を説明しますと、テーブルのみの入ったデータベース(DT)を サーバーに置き、使用するユーザーのコンピュータにはフォームや レポートの入ったデータベース(PG)を置いて、それぞれサーバーから テーブルをリンクしています。 PGには複数のフォームがあり、例えばフォーム(1)を誰かが使用しているときは 他の人はフォーム(1)は使用できないけど、他のフォーム(2)、フォーム(3)の 使用はできるようにしたいのです。 どなたかご存知の方いらっしゃいましたら回答お願いします。

  • MySQLとPostgreSQLについてのSQLインジェクション

    はじめて質問させていただきます。 よろしくお願いします。 現在、私は大学の研究テーマでデータベース(MySQL、PostgreSQL)を使っているCGIを自作し、それぞれのデータベースについてSQLインジェクションの脆弱性について調べる、という研究を行っています。 ブラインドSQLインジェクションについて調べているのですが、 PostgreSQLの場合、pg_tablesというテーブルにデータベースのテーブル一覧表がのっていて、それを参照することでテーブル名が取得でき、いろいろ悪いことができてしまいますが、MySQLの場合、ブラインドSQLインジェクションを起こそうと思った場合どのようなコマンドを使えばよいのでしょうか? SHOW TABLESで使用中のデータベースのテーブル一覧は取得できますが、それをクエリの一部として使うことはできるのでしょうか・・・? また、全く関係ない質問なのですが、このCGIはRubyで記述して作りました。Rubyにはプリペアドステートメントという機能があるのですが、これをデータベースにアクセスするすべての箇所で用いればSQLインジェクションは100%起きないといえるのでしょうか?(現在考え得る範囲でよいのでお願いします) 卒論で困っているので知っている方がおられましたらどうかよろしくお願いいたします。

  • MySQLでデータベースを一つのファイルにひたすら保存していいのか

    MySQLでデータベースを一つのファイルにひたすら保存していいのか PHPでMySQLを使用しています。 データベースを作る時は以前から二つの方法を使っています。 ・データベースファイルを一定のデータ量になると分割する方法 ・データベースファイルを分割せず一つのファイルにひたすら保存していく方法 これはどっちがいいのでしょうか? 一つのデータベースファイルに保存し続けるとユーザーがアクセスする際は そのデータベースファイルにしかアクセスしないので共有ロックの関係で ユーザーが増えるほど分割した場合に比べてオープンが低速化したりしないでしょうか?

    • ベストアンサー
    • PHP
  • MySQLのデータファイルの位置について

    MySQLでテーブル、データベースを作成したのですが、 OS上から作成したテーブル・データベースが保存されているファイル(データファイル?) が見つけられません。 テーブルにデータをインサートしてコミットして、 セレクトを行ってデータは反映されていることは確認しています。 OSはWindows 7 MySQLのバージョンは5.5です。 user_dbというデータベースを作成し、 show databasesを行った結果、 information_schema mysql performance_schema test user_db が表示されることから、データベースuser_dbは正常に作られていると思います、 user_dbに対して、インサートは可能で、一度データベースを停止して、 再起動後、インサートしたデータがみれています。 しかし、インストールフォルダのMy.iniのdatadirで指定されているフォルダには mysql performance_schema のフォルダしかない状態です。(ここにuser_dbフォルダが作成されると思うのですが) どこにデータが保存されているのでしょうか?

    • ベストアンサー
    • MySQL
  • MySQLのテーブル選択について

    ある無料サーバでBBSをアップしようと思い挑戦しましたが無理だったのでご教授お願いいたします。 そのサイトにあるphpMyAdmin 2.6.2を使ってデータベース「toshi」を作りテーブル「bbs」にして6個のフィールドを作りました。 MySQL4.0.27ヴァージョン [bbs.php] $link = mysql_connect('localhost','toshi','***'); if(!$link){ die('読み込みできません。エラーが発生しています。'.mysql_error()); } $dbdate = mysql_select_db('bbs',$link); if (!$dbdate){ die('データベース選択失敗です。'.mysql_error()); } とした場合 「データベース選択失敗です。Access denied for user: 'toshi@localhost' to database 'bbs'」 というエラーが表示されます。 データベースへの接続はできているみたいなのですがどうもテーブルが選択できないみたいです。 bbsテーブルがないわけでないのでたぶんアクセス権限の無いテーブルなのかもしれません。 アクセス権限をあるようにしたいのですがどうすればいいのでしょう?

    • ベストアンサー
    • PHP
  • MySQLの効率の良い使い方

    お世話になっております。 これまで、テキストファイルにログを保存する形で、SNSの簡易版などを作成していたのですが、 インデックス用のログが頻繁に破損してしまうため、速度向上の目的も合わせてMySQLに移行したいと考えております。 Apache2+PHP+MySQLでの構築を考えているのですが、データベースを利用するのは初めてでして、 基本的な使い方は理解したのですが、効率的なデータベースの利用法が良く分かりません。 これまでのファイルに保存していく方式では、以下のような構造でした。 user.log - 全ユーザーのIDやパスワード、名前などの簡単な情報をまとめて記録した検索用インデックスログファイル user/[ID].log - ユーザーの性別や自己紹介などの登録情報をID別に保管 item/[ID].log - SNS内で利用できるミニゲームの所持アイテムをID別に保管 mail/[ID].log - SNS内でのメールのようなものをID別に保管 ... これらをMySQLで実装する場合には、どのようにテーブルを作成すれば良いのでしょうか? ユーザー1人ひとりに対し、1つずつ所持アイテム用のテーブルであるとか、 メール用のテーブルを作成していけば良いのでしょうか? 例)「item_[ID]」という名前のテーブルをユーザーごとに作成。 そうすると、ユーザーは数千人を想定しているので、 テーブルを数万個作ることになりますが、高負荷などの問題はないでしょうか? それと、これまで同時アクセスによるファイルの破損のトラブルが多かったのですが、 MySQLを用いれば改善されるでしょうか?(これまでも排他処理は色々講じていました) カウンタなど頻繁に更新され、かつデータが非常に軽いものについては、 ファイルにログを保存した方が良いのでしょうか? ご教授頂ければ幸いです。 ローカル:WinXP、Apache2.2.3、PHP5.2.0、MySQLServer5.0 実装サーバー:Linux、Apache1.3.37、PHP4.4.4、MySQL3.23.58

    • ベストアンサー
    • MySQL
  • MySQLのバイナリデータについて

    Linux版MySQLで稼働していたデータベースをWindows版で稼働させたいと思っています。 データベースはinnodbです。 my.iniをWindowsの環境に合わせて書き換え、MySQLは起動したのですがテーブルが見れません。 mysqlデータベースは参照でき、ユーザー権限等も書き換えられるのですが、どうやらinnodbが見れないようです。 そもそもLinux版のinnodbはWindows版MySQLでは使用できないのでしょうか?

    • ベストアンサー
    • MySQL
  • MySQL5.6.11用のGUIソフトを教えて

    MySQLをデータベースにして、AccessとFileMakerからリンクするシステムを作りたいと思っています。 ソフトのバージョンは、Access2013とFileMaker13Proで、両方がODBC接続できるものとして、MySQL5.6.11を考えています。MySQLは、Windows Server 2003に置くことを考えています。 MySQLは、データベースとしてテーブルを作ることができれば良いのですが、その条件で使いやすいGUIソフトを教えてください。 よろしくお願いします。

  • access2000からmysqlへ access to mysql converter

    はじめまして aceess からmysqlにデータをコピーする方法で迷っています。 access2000のデータをオンラインで使用しようと思っています。すでにローカルでaccessDBを使用していて、その情報をオンラインで閲覧できるようにしたいです。 すでにmysqlの使用可能なサーバーをレンタルしているのでそこにmysqlとしてデータをおこうと考えています。(プログラムはphp) 市販の(access to mysql converter )コンバーターなどを使用するのが一番なのでしょうか? アクセスDBにテーブルが複数あるのでテーブル一つ一つをエクスポート、mysqlからインポートはちょっと大変そう。 (データは月に一度accessからmysqlにコピーして、アップロード.ローカルのaccessはこのまま使用し続けます) access to mysql converter などを利用されたことのある方、感想をお聞かせください。 皆様はaccessからmysqlにどのようにデータをコピーしているのでしょか?

  • Access -> MySql

    AccessからMySqlに接続しようとしているのですが、なかなかうまくいきません。 ODBCでデータソースを作成するところまでは出来ているのですが (TestでもSuccess:connection was mode!とでています) Accessを起動し 「ファイル」->「外部データの取り込み」->「テーブルのリンク」を選択し出てきたダイアログの「ファイルの種類」でODBCデータベースを選択するのですが、「データソースの選択」ダイアログが出てきません。 何に問題があるのでしょうか? Access:Access2003 MySql:5.0.27 ODBC:Mysql Connecter/ODBC 3.51.17 DBサーバ、クライアントともにXPを使用しています。

専門家に質問してみよう