RDBMSとの比較
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2019/11/21 03:15 UTC 版)
「オブジェクト関係データベース」の記事における「RDBMSとの比較」の解説
RDBMS (関係データベース管理システム) では、次のようなSQL文を記述できる (MySQLでの例) 。 CREATE TABLE Customers ( Id CHAR(12) NOT NULL PRIMARY KEY, Surname VARCHAR(32) NOT NULL, FirstName VARCHAR(32) NOT NULL, DateOfBirth DATE NOT NULL) SELECT InitCap(Surname) || ', ' || InitCap(FirstName) FROM Customers WHERE Month(DateOfBirth) = Month(getdate()) AND Day(DateOfBirth) = Day(getdate()) 現在のほとんどのRDBMSでは、ユーザ定義関数を定義することができる。ユーザ定義関数を使って上記の問い合わせを記述し直すと次のようになるであろう。 SELECT Formal(Id) FROM Customers WHERE Birthday(Id) = Today() ORDBMS (オブジェクト関係データベース管理システム) でも、このような記述をすることができる。BirthDay() のようなユーザ定義のデータ型と式を定義することができる。すなわち次のように記述できるであろう。 CREATE TABLE Customers ( Id Cust_Id NOT NULL PRIMARY KEY, Name PersonName NOT NULL, DateOfBirth DATE NOT NULL) SELECT Formal( C.Name ) FROM Customers C WHERE BirthDay ( C.DateOfBirth ) = TODAY; ORDBMSのもう一つの特長は、データベースがデータ間の関連を利用することができ、関連するデータを容易に辿ることができることである。住所録アプリケーションにおいては、住所録に載せる一人一人に対して複数の住所を記録するために、もう一つテーブルを追加することになるであろう。従来のRDBMSを使うと、人物と住所のデータを検索するために結合が必要になる。従来のRDBMSを使った場合の検索問い合わせは次のようになる。 SELECT InitCap(C.Surname) || ', ' || InitCap(C.FirstName), A.city FROM Customers C, Addresses A WHERE A.Cust_Id = C.Id -- 結合 AND A.city = 'New York' ORDBMSでは、上記と同じ検索問い合わせを非常に簡潔に記述することができる。 SELECT Formal( C.Name ) FROM Customers C WHERE C.address.city = 'New York' -- 関連はORDBMSにより「認識」される
※この「RDBMSとの比較」の解説は、「オブジェクト関係データベース」の解説の一部です。
「RDBMSとの比較」を含む「オブジェクト関係データベース」の記事については、「オブジェクト関係データベース」の概要を参照ください。
- RDBMSとの比較のページへのリンク