質問: DBとDBMSについていまいちピンときていない形です。 DBはデータを一元的に管理するファイルでDBMSはDBMSはSQL文を実行するソフトであるものというのは理解しています。 MySQLをDBと言う人がいますがMySQLをインストールすることでSQL文でテーブルを作ったり、内容を変更できるので個人的にはDBMSなのではないかと思っています。MySQLはDBとDBMSのどちらでしょうか。
回答: 用語質問がこのサイトにふさわしいかどうかは甚だ疑問なのですが、前半ざっくりと済ませて、後半コーディングに関わる話をさせてもらいます。用語そのものに関して調べたいのであれば、Wikipediaなり、各種の技術用語集なりに直接当たられたほうが良いでしょう。ここではそれらへのリンクや引用も控えておきます。 DBMSと言うのはDatabase Management Systemの略で、「データベースを管理するシステム」と言うことですね。細かいことにこだわりだすとキリがありませんが、概ねMySQL, PostgreSQL, SQL Server, DB2...などのソフトウェア(パッケージ・スイート)を表す時に使われている言葉だといって良いでしょう。 それに対して「DB」(「データベース」「database」と表記しても同じ、個人的に区別している人はいるかもしれませんが、多数のコンセンサスを得ているとは言い難い)と言う言葉はもともと「データの基地(base)」と言う意味で、あまり厳密な定義を気にして使われることの少ない用語だと言って良いでしょう。 * 「おたくのシステムDBには何使ってる?」「去年のバージョンからPostgreSQLです」 なんて、会話では上のDBMSの意味で使っていると思われます。システム開発に携わっているもの同士での会話でも、「それ『DB』じゃなくて、DBMSのことでしょ」なんて突っ込みは聞いたことがありません。 * 「RDBとOODBそれぞれのメリットデメリットって何ですか?」 なんて言い方では、後ろの「DB」の部分はデータの保存の仕方、あるいはその背景にある数学的理論を表している、と言うことになるでしょう。 したがって、「MySQLはDBMS」は正解でしょうし、「MySQLはDB」と言うのも間違いではないと言うことになります。ただし、曖昧さが致命的になりうる文脈の中では、単に「DB」と言う言い方はやめておいたほうが良いでしょう。 と言うわけで、私の主観が散りばめられた用語説明はこの辺にして、これ知らないとコーディング(DDLをメインにしたSQLの記述ですが)で困ることになる場合を上げておきます。 それはMySQLをはじめとした多くのDBMSには(標準SQLの定義にも)DATABASEと言う概念が存在するということです。 > > 複数のテーブルやVIEWをひとまとめにしたもので、DBMS上のデータ管理単位の一つ > > > と言う言い方より、 > > `CREATE DATABASE`文で作られる何か > > > と言った方がわかりやすいかもしれません。 MySQL 5.6 リファレンスマニュアル CREATE DATABASE 構文 この意味でのDATABASEと言うものが存在するということを知らない人も開発経験者の中にはおられて、「こっちのサーバにはアプリ用と管理用のDBが2つ切ってある」なんて言い方だけで、個人用開発環境の構築は当人にお任せにしてしまうと、本番用構成では動かないSQLを大量生産されてしまう、なんてことになりかねません。 「DB」と言う言葉は大変曖昧に使われることが多く、「うちのDBはMySQLです」なんて言い方も間違いとは言えない。ただし、きちんとした定義に基づいた使い方をする時には、そのことをはっきりわかるようにしておかないとひどい目に会うことがある、と言うのは覚えておいた方が良いかもしれません。 (ちなみにMySQLでのこの意味のDATABASEは1つの「ファイル」にはなっておらず、「データを一元的に管理するファイル」と言うのがどこからきたのか、よくわからないですね。)