SSブログ

RDBMSのはじまり [SQL Server]

Edgar Frank Coddが1970年に発表したA Relational Model of Data for Large Shared Data Banks、
という論文が事の始まりでした。以来40年以上もRDBMSはデータ、システムの中核にいるのです。

http://www.seas.upenn.edu/~zives/03f/cis550/codd.pdf


先日twitterでこの論文について触れたので参考までに。
データアクセスに使われるSQLをCoddは目の敵にしていたり、
OLAPなどの言葉を作ったり、共同研究者であるC.J.Dateは
今も存命で新しいデータアクセスについて考えていたりと
面白い話がたくさん転がっています。

CoddはRDBMSであるためには12の条件が必要であると説いていました。
http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%83%E3%83%89%E3%81%AE12%E3%81%AE%E8%A6%8F%E5%89%87
http://www.cse.ohio-state.edu/~sgomori/570/coddsrules.html

CoddはSQL言語や自分の理想から外れるRDBMSベンダーと戦うためにこの12の法則を提唱しました。
この12の条件を満たすのは難しいと言われているのはそのためだと思います。

自分なりにSQL Serverを当てはめてみます。
上記URLから抜粋しています。

0. Foundation Rule
A relational database management system must manage its stored data using only its relational capabilities.
>>>これは満たしています

1. Information Rule
All information in the database should be represented in one and only one way - as values in a table.
>>>テーブルの値として表現されること、大丈夫です

2.Guaranteed Access Rule
Each and every datum (atomic value) is guaranteed to be logically accessible by resorting to a combination of table name, primary key value and column name.
>>>主キーが必要とありますが、実際問題主キーの無いテーブルは作れます。
>>>しかし行IDがある以上これを主キーとして見なすこともできるような気もします。

3. Systematic Treatment of Null Values
Null values (distinct from empty character string or a string of blank characters and distinct from zero or any other number) are supported in the fully relational DBMS for representing missing information in a systematic way, independent of data type.
>>>NULLの扱いは大丈夫でしょう

4.Dynamic On-line Catalog Based on the Relational Model
The database description is represented at the logical level in the same way as ordinary data, so authorized users can apply the same relational language to its interrogation as they apply to regular data.
>>>システムテーブルにアクセスするときもSQLを書くので大丈夫でしょう

5. Comprehensive Data Sublanguage Rule
A relational system may support several languages and various modes of terminal use. However, there must be at least one language whose statements are expressible, per some well-defined syntax, as character strings and whose ability to support all of the following is comprehensible:

data definition
view definition
data manipulation (interactive and by program)
integrity constraints
authorization
transaction boundaries (begin, commit, and rollback).

>>>必要な構文は揃っています

6. View Updating Rule
All views that are theoretically updateable are also updateable by the system.
>>>論理的に、というキーワードがどこまでを指すかに依存しますが、SQL Serverには
>>>更新可能なビューがあります。完全に、となると難しいでしょうか。
http://technet.microsoft.com/ja-jp/library/ms187956.aspx

7. High-level Insert, Update, and Delete
The capability of handling a base relation or a derived relation as a single operand applies nor only to the retrieval of data but also to the insertion, update, and deletion of data.
>>>内部の実装に依存しますが、この通り動くはずです

8. Physical Data Independence
Application programs and terminal activities remain logically unimpaired whenever any changes are made in either storage representation or access methods.
>>>理論的にはOKですが、一般的にはテストして確認しますし、チューニングを要することも多々あります

9. Logical Data Independence
Application programs and terminal activities remain logically unimpaired when information preserving changes of any kind that theoretically permit unimpairment are made to the base tables.
>>>インターフェースさえ変更しなければ満たします

10. Integrity Independence
Integrity constraints specific to a particular relational database must be definable in the relational data sublanguage and storable in the catalog, not in the application programs.
>>>満たしています

11. Distribution Independence
The data manipulation sublanguage of a relational DBMS must enable application programs and terminal activities to remain logically unimpaired whether and whenever data are physically centralized or distributed.
>>>分散問いあわせの仕組みを持っているので大丈夫です

12. Nonsubversion Rule
If a relational system has or supports a low-level (single-record-at-a-time) language, that low-level language cannot be used to subvert or bypass the integrity rules or constraints expressed in the higher-level (multiple-records-at-a-time) relational language.
>>>NO LOCKヒントが気になりますが構造を壊すことはありません。

ということで年初、Coddのことを振り返ってみました。

スポンサードリンク





nice!(1)  コメント(0)  トラックバック(0) 
共通テーマ:仕事

nice! 1

コメント 0

コメントを書く

お名前:[必須]
URL:[必須]
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。