RDBMSのスキーマの存在意義って何でしょうか?


データベースオブジェクト(テーブルやビューなど)を管理する名前空間としての役割はデータベースがあれば十分だと思います。
また、OracleやSQL Serverにおける実装はスキーマと所有者が対応しており、SQL文でスキーマ名の修飾付きでデータベースオブジェクトを指定する場合(例:SELECT * FROM スキーマ名(所有者名).テーブル名)、所有者の情報がユーザに漏れることになるため、セキュリティ上問題だと思います。
そして、OracleやSQL Serverより後発であるMySQLはスキーマをサポートしてません。
そのため、スキーマは存在しないほうがよいんじゃないか、と思うのですが、いかがでしょうか?

回答の条件
  • 1人5回まで
  • 登録:2007/02/09 14:42:40
  • 終了:2007/02/16 14:45:02

回答(6件)

id:germansuplex No.1

germansuplex回答回数17ベストアンサー獲得回数12007/02/09 15:52:44

ポイント19pt

スキーマの意義は、ユーザーやグループごとに権限を与えることにより、セキュリティーを高めたり、管理をしやすくすることができることです。

セキュリティーに関していうならば、DB管理者に比べて一般ユーザーのアクセス権限を低く設定すれば、セキュリティーはより高くできますよね。

一般的にスキーマは、ユーザー個人によりもユーザーロールに対して割り当てた方がより効果的で、ユーザーIDの漏洩も防ぐことができます。

http://www.microsoft.com/japan/sql/facts/compare/01.mspx

id:witt

おっしゃる意義は、SQL Server 2005でユーザーとスキーマが分離が実現して初めて活きてくるものだと思います。

ということは、SQL Server 2005以外ではスキーマはあまり意味がないと考えてもよいでしょうか?

2007/02/09 20:31:01
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402007/02/09 21:44:16

ポイント19pt

PostgreSQL では、7.3 以降スキーマが新たにサポートされました。

・1 つのデータベースを多数のユーザが互いに干渉することなく使用できるようにするため。

・管理しやすくなるよう、データベースオブジェクトを論理グループに編成するため。

・サードパーティーのアプリケーションを別々のスキーマに入れることにより、他のオブジェクトの名前と競合しないようにするため。

確かに Oracle 等ではスキーマと所有者が対応していますが、あくまで実装レベルの話であり RDBMS 全体に拡大解釈すべきではないと思いますがどうでしょうか?

id:witt

では、OracleやSQL Server2000の実装では意味がないと解釈してよいでしょうか?

2007/02/09 22:26:40
id:germansuplex No.3

germansuplex回答回数17ベストアンサー獲得回数12007/02/10 08:15:36

ポイント18pt

スキーマはデータベースオブジェクトレベル以上に細かく権限を設定できるメリットを持っています。

DBMSによってはスキーマのサポートレベルに差があるにせよ、そのメリットがある以上、スキーマは意味もっています。

どの程度スキーマの機能を使うのかは、DBMSを何に使うのかによって変ってくるため、すべてのシステムに絶対必要とはいえませんが、あると便利な機能であることに間違いはないです。

開発者たちが望んでいる機能だからこそ、サポートされるわけですしね。

id:witt

ご回答をもらってもピンと来ないところがあるのですが、なぜかと考えたとき、

「スキーマの機能を使う」という表現に違和感を感じている自分に気づきました。

そこで、不勉強ですいませんが、スキーマの定義について確認させてもらえないでしょうか?

私が理解しているスキーマとは、テーブルやビュー等のなどのデータベースオブジェクトを

格納する単なる入れ物です。

権限の設定はGRANT文を使うと思うのですが、この機能とスキーマとは別の話だと認識してます。

(2007/02/11 10:20追記)

興味深い文章を見つけました。

『アーキテクチャ徹底解説Microsoft SQL Server 2000』

http://www.amazon.co.jp/%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%...

の229ページ

>ANSI SQL-92標準には、「スキーマ」(正確にいうならばSQLスキーマ)の概念が

>含まれている。この概念は多くの点でSQL Serverのデータベース概念に類似している。

>ANSI規格によると、SQLスキーマはディスクリプタの集まりであり、ドキュメントでは

>ディスクリプタを「SQLオブジェクトのコード化された記述」と説明している。

>基本的には、スキーマはテーブル、ビュー、および制約などのSQLオブジェクトの

>集まりである。ANSI SQLスキーマはSQL Serverデータベースに似ている。

ということで、(ANSI SQLスキーマ = SQL Serverデータベース)であるならば、

ここ(http://www.microsoft.com/japan/sql/facts/compare/01.mspx)で

語られているSQL Serverスキーマは一体のために必要なのだろうと思います。

2007/02/11 10:22:18
id:kurukuru-neko No.4

kurukuru-neko回答回数1844ベストアンサー獲得回数1552007/02/10 19:14:48

ポイント18pt

>所有者の情報がユーザに漏れることになるため

スキーマを個人と関連づける実装や、利用方法を

するとそうなるかも知れません。

スキーマは使う目的は、ある目的を果たす為のアクセス

権限・ポリシーを明確にする目的には便利な機能です。

ただスキーマだけで権限が決定されるわけではなく

例えばOracleのVPDを使えばさらに細かい個別ユーザ単位

の制限なども出来ます。

RDBMSとしてもSQL標準準拠するためスキーマ機能がを

無視するわけにもいかない。

http://www.atmarkit.co.jp/fnetwork/tokusyuu/01sql99/sql99_1a.htm...

id:witt

上記の返信のとおり、できましたら、スキーマの定義を教えてもらえないでしょうか?

2007/02/11 07:32:21
id:germansuplex No.5

germansuplex回答回数17ベストアンサー獲得回数12007/02/11 17:23:46

ポイント18pt

>私が理解しているスキーマとは、テーブルやビュー等のなどのデータベースオブジェクトを格納する単なる入れ物です。

ANSI標準を定義といって差し支えないと思いますが、それからみて上記の捉え方で間違いないと思います。

>権限の設定はGRANT文を使うと思うのですが、この機能とスキーマとは別の話だと認識してます。

別の機能ですが、かなり関連の強いのも事実です。

権限の設定:GRANT

オブジェクトのグループ化:SCHEMA

スキーマを用いることにより、オブジェクトをグループ化でき、グループごとにアクセス権限を設定することができるのです。

kurukuru-nekoさんもおっしゃられてるように、スキーマを使う目的は、“ある目的を果たす為のアクセス権限・ポリシーを明確にする"ことです。

各ベンダーのサポートレベルや実装方法にちがいがありますが、スキーマはその役割を果たしている思うのですが。

無くてもなんとかなる機能かもしれませんが、あったほうが便利だと思いませんか?

id:witt

>スキーマを用いることにより、オブジェクトをグループ化でき、

>グループごとにアクセス権限を設定することができるのです。

ANSI標準の話で言えば、確かにそのとおり、あると便利です。

ANSI標準では、スキーマより上位のグループ化を行うカタログでそのようなことを行う構文がないみたいなので、スキーマを使用するほかないでしょう。

ここで新たな疑問が。SQL Serverの実装での話をすると、上記引用の利点はスキーマのみならずデータベースも持っていると思います。

では、どちらを使うかについて、何かしらの基準というものはあるのでしょうか?

2007/02/12 12:50:23
id:kurukuru-neko No.6

kurukuru-neko回答回数1844ベストアンサー獲得回数1552007/02/12 03:46:40

ポイント18pt

おおよそデータ構造の定義・操作全般と私は思っています。

一般的及びOO的解説

http://users.kyoto-kcg.ac.jp/~a-ota/database/ch2.pdf

http://www.techscore.com/tech/sql/10_01.html

http://members.jcom.home.ne.jp/kaneko.takahiro/oodb.html

id:witt

なるほど。定義だけでなく、操作も含むというのが、一般的な見地みたいですね。

2007/02/12 12:54:58

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

  • ●『仰せのままに★ご主人様!』OP - 走り出す季節 http://jp.youtube.com/watch?v=uqY9VsODMOE ●『仰せのままに★ご主人様!』ハッピー・バレンタインディ http://jp.youtube.com/watch?v=7e85j4dZbQ0 このOP、Youtu
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません