データベース Transact-SQL
Categories: MCA Database
1.Transact-SQL
SQLはANSIによって規格が定められた標準のデータベース言語であり、最新の規格はANSI SQL-92であり、Transact-SQLはSQL Serverで使用するSQL言語です。
(1)Transact-SQLの分類
データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つに分類され、Transact-SQLの命令のことをステートメント(問合せ、クエリ)と呼びます。
DDL:create,alter,drop
DML:Select,Insert,Update,Delete
DCL:Grant,Revoke,Deny
(2)Transact-SQLの処理の流れ
ステップ1.解析
発行されたクエリがTransact-SQLの構文規則に照らして正しいかどうかチェックされる
ステップ2.標準化
クエリの中から冗長な部分が探されそれを排除することでクエリを効率的に処理しやすい形に変換する。
ステップ3.最適化
クエリの評価が行われ、その結果をもとに最も効率的な実行の方法がどのようなものかが判断される。
ステップ4.コンパイル
クエリが人間に読める形式のものからコンピュータに読める形式のものに変換される。
ステップ5.実行
コンパイルによってできた実行コードが実行される。
(3)データ型とは
データベースに格納されるデータにはさまざまな種類があり、その種類のことをデータ型と呼びます。
① int:正または負の整数
②decimal:固定小数点数
③numeric:decimalと同じ
④float:浮動小数点数
⑤money:金額
⑥datetime:日付と時刻
⑦char:固定長の文字列
⑧varchar:可変長の文字列
⑨text:固定長の文字列
⑩binary:バイナリデータ
⑪image:画像データ
2.データの抽出
(1)Selectステートメント
Select <列名> FROM <テーブル名> WHERE <検索条件>、複数の列を指定する際には列名と列名の間を,で区切ります。
(2)複数の列が検索対象になる場合
検索対象が複数になる場合は<*>の記号を使用します。
SELECT * FROM 社員データ WHERE 社員番号=001
(3)比較演算子
比較演算子には次の記号を使用します。
①= 等しい
②> 大きい
③< 小さい
④>= 以上
⑤<= 以下
⑥< > IWOjD
(4)ワイルドカード文字
あいまい検索をする場合、ワイルドカード文字を使用します。
Where句の検索条件の指定にはワイルドカード文字を使用することもできます。%,-,[],[^]
①select * from 社員データ where 社員名 Like ‘赤%’
この場合は社員データテーブルの中の赤で始まる社員の行を抽出します。
②Select * from 社員データ where 社員名 Like ‘赤-‘
社員データテーブルのすべての列殻社員名が赤から始まる2文字になっている行を抽出します。
③Select * from 社員データ where 社員名 like ‘赤[坂羽尾]’
社員データテーブルの全ての列から社員名が赤で始まる2文字目が坂、羽、尾になっている行を抽出します。
④Select * FROM 社員データ where 社員名 Like ‘赤[^尾]’
この場合は2文字目が尾でない行を抽出します。
(5)論理演算子
論理演算子には AND,OR,NOTなどがあります。
①* Select * from 社員データ Where 社員名 Like ‘赤[^尾]’ AND 社員番号 >001
②* Select * from 社員データ where 社員名 like ‘赤[^尾]’ OR 社員番号 >001 AND 給与 >=200000
③* Select * from 社員データ where (社員名 like ‘赤[^尾]’ OR 社員番号 > 001) AND (給与 >=200000)
(6)算術演算子
算術演算子は+,-,*,/,%があります。
(7)BETWEEN演算子
①Select * from 社員データ where 社員番号 Between 001 and 003
Between演算子を使用した場合も比較演算子を使用した場合もコンピュータ内部での処理やステートメントの実行速度に違いはありません。
(8)IN演算子
IN演算子はSELECTステートメントの中でIN演算子の後に続くデータから選択し抽出する場合に使用します。
①Select * from 社員データ Where 社員名 IN(“田中’,’鈴木’,’佐藤’)
OR演算子を使用すると次のように書き換えられます。
②Select * from 社員データ where 社員名 =’田中’ or 社員名 =’鈴木’ or 社員名=’佐藤’
(9)NULL
データベースのデータ欠落のことをNULLといい、データベースからNULLの部分を検索するにはIS NULL演算子と呼ばれる演算子を使用します。
①Select * from 社員データ Where 電話番号 IS NULL
逆にNULLになっていない行を抽出するにはIS NOT NULL 演算子と呼ばれる演算子
②Select * from 社員データ where 電話番号 IS NOT NULL
(10)ORDER BY句
ORDER BY をSelectステートメントに入れると行を昇順にソートすることができます。
①Select * from 社員データ where 社員番号 >=001 order by 社員番号 ASC
ソートを昇順から降順にする場合はDESCを使用します。
②Select * from 社員データ where 社員番号 >=001 order by 社員番号 DESC
(11)Distinct
Selectステートメントによっては処理結果(導出テーブル)に重複する行ができてしまうがSelectステートメントにDistinctを使用すれば解消できます。
この場合は社員データテーブルから社員番号001以上のデータを重複しないで抽出します。
①Select DISTINCT * from 社員データ Where 社員番号 >=001
(12)列名の変更
①列名変更、ASの使用
Select 社員番号 AS 社員ID FROM 社員データ
社員番号を社員IDとして抽出します。
②スペースを使用する場合
Select 社員番号 社員ID FROM 社員データ
③=を使用
Select 社員番号 = 社員ID FROM 社員データ
(13)集計関数
集計関数は次の関数があります。
①AVG:平均値を求める
②Count:行数を求める
③MAX:最大値を求める
④MIN:最小値を求める
⑤SUM:合計値を求める
集計関数を使用した例は次の通りです。
①AVG関数の例
Select AVG(給与) AS ‘給与の平均値’ FROM 社員データ
社員データテーブルから給与平均値として給与の平気を抽出します。
②COUNT関数の例
Select count(社員名) AS ‘社員名’ FROM 社員データ
③SUM関数の例
Select SUM(給与) AS ‘給与の合計値’FROM 社員データ
社員データテーブルの給与例のデータの合計値を求めるステートメントです。
(14)GROUP BY句
テーブルの行を特定の列のデータを基準にしてグループに分けます。この関数を使用した場合はグループごとに合計値、平均値、最大値を求めることができます。
①Select 部署コード,SUM(給与) AS ‘部署ごとの給与の合計値’ FROM 社員データ GROUP BY 部署コード
社員データテーブルの給与列のデータの合計値が表示される列には部署ごとの給与の合計値という名前で抽出します。
(15)HAVAING句
HAVING区は集計関数とGROUP BY句で求めたグループごとの合計値や平均値から特定の条件を満たすものだけを抽出するための句です。
①Select 部署コード,AVG(給与) AS ‘部署ごとの給与の平均値’ FROM 社員データ GROUP BY 部署コード HAVING AVG(給与) >=200000
この場合は社員データテーブルの給与列のデータの平均値を部署別に求めさらにその中から20万以上になっているものを抽出します。
3.副問合せ
Selectステートメントの中にSELECTステートメントを更に埋め込むことを副問合せと呼ぶ。この場合は副問合せから実行しその処理結果を利用して外側のステートメントが実行されます。
副問合せをサブクエリと呼びます。ただしSQL Serverでは副問合せの中にさらに副問合せを埋め込むことは原則として認められていません。
■使用例
この場合は商品データテーブルから単価を平均価格とし、その平均価格以上の単価の商品名、単価、平均価格を抽出します。
Select 商品名,単価,(Select AVG(単価) FROM 商品データ) AS 平均価格 FROM 商品データ WHERE 単価>=(SELECT AVG(単価) FROM 商品データ)
4.相関副問合せ
外側のSELECTステートメントで選択された行1つ1つにつき1回ずつ実行される副問合せです。相関副問合せの処理は次の手順で進みます。
手順1.外側のSELECTステートメントで選択されたデータのうち1行目が内側のステート面とに渡されます
手順2.渡されたデータに対して内側のSELECTステートメントが実行され、その事項結果が外側のSELECTステートメントに渡されます。
手順3.外側のSELECTステートメントが渡された実行結果のうち条件に合うものだけを導出テーブルに組み込みます。
手順4.外側のSELECTステートメントで選択されたデータがなくなるまで1-3の処理が繰り返されます。
■使用例
Select 商品コード.売上金額 FROM 商品データ AS P1 WHERE P1.売上金額 <= (SELECT AVG (P2.売上金額) FROM 商品データ AS P2 WHERE P2.商品コード AS P2 WHERE P2.商品コード=P1.商品コード)
このステートメントを実行すると売上金額が全商品の平均値以下になっている商品が検索され、その商品コードと売上金額を格納した導出テーブルが作成されます。A.Bというようにピリオドで区切られているステートメントでは左側にあるAはテーブル名をを示し、右側になるBはそのテーブルAの列名を示します。
5.EXISTSキーワード
EXISTSキーワードは相関副問合せに使用するもので、特定の条件を満たす行がテーブル中に存在するか否かを外側の問合せに知らせるサブクエリを作成するためのキーワードです。
Select 社員番号,社員名 FROM 社員データ AS s WHERE EXISTS(Select * from 誕生日データ as b where s.社員番号=b.社員番号 and b.生年月日 =’66/5/26’)
このステートメントを実行すると生年月日が66/5/26である社員があるか検索され該当する社員がいればその社員の社員番号と名前を格納した導出テーブルが作成されます。
①共通集合演算と差集合演算
差集合演算はNOT EXISTSキーワードを使用し、テーブルA,Bについて共通集合演算を行うステートメントです
Select * from A where EXISTS (Select * from B where<Aの主キー>=<Bの主キー>)
差集合を行うステートメントは次の通りです。
Select * from A where NOT EXISTS (Select * from B where <Aの主キー>=<Bの主キー>)
6.テーブルの結合
同時に複数のテーブルを対象として検索を行わねばならない為、テーブルの結合を行う場合があります。
(1)内部結合
結合の対象となるテーブルの間で共通の列を比較し同じデータをもつ行だけを抽出します。通常結合とは基本内部結合を指します。内部結合を行う場合はFROM句でINNER JOINを使用します。
■構文 Select 社員データ.*,部署コードと部署名.* FROM 社員データ INNER JOIN 部署コードと部署名 ON 社員データ.部署コード=部署コードと部署名.部署コード
■直積集合演算
テーブルA,Bの間で直積集合演算を行うステートメントです
SELECT A.*,B.*FROM A INNER JOIN B
(2)外部結合
内部結合に対し共通する列のデータが結合するテーブルの間で一致していない行も残すという場合は、外部結合と呼びます。外部結合には左外部結合と右外部結合という二つの種類があります。
左外部結合はテーブルAについてはすべての行を残し、テーブルBについてはテーブルAと共通する列のデータが一致しているものだけを残し、右外部結合はテーブルBについてはすべての行を残し、テーブルAについてはテーブルBと共通する列のデータが一致しているものだけを残します。
(3)左外部結合
Select 社員データ.*,部署コードと部署名.* FROM 社員データ LEFT OUTER JOIN 部署コードと部署名 ON 社員データ.部署コード=部署コードと部署名.部署コード
(4)右外部結合例
Select 社員データ.*,部署コードと部署名.* FROM 社員データ RIGHT OUTER JOIN 部署コードと部署名 ON 社員データ.部署コード = 部署コードと部署名.部署コード
7.結果の結合
これにはUNIONという演算子を使用しUNION演算子を使用します。
■構文
Select ステートメント UNION Select ステートメント
■例 Select 商品コード,売上金額 From 1月の売上データ UNION Select 商品コード,売上金額 FROM 2月の売上データ
このステートメントは1月の売上データテーブルの商品コードの列、売上金額列を2月の売上データテーブルの商品コード列、売上金額列を結合させます。
UNION演算子を使用した処理は和集合と同じものになります。
8.データ更新
(1)INSERT
INSERTステートメントはテーブルに新しい行を一つ追加するステートメントです。
■構文 INSERT <テーブル名><列名> VALUES <追加するデータ>
■例 INSERT 社員データ(社員番号,社員名) VALUES (005,’小田’)
(2)UPDATEステートメント
■構文 UPDATE<テーブル名> SET<列名> =<更新後のデータ> where <更新対象となる行を限定する条件>
■例 UPDATE 社員データ SET 社員名=’渡部村子’ Where 社員番号=005
更新対象となる行を限定する条件の指定によっては一度に複数の行を更新対象にできます。
(3)DELETEステートメント
テーブルの既存の行を削除するというステートメントです。
■構文 DELETE <テーブル名> where <削除する行を限定する条件>
■例 DELETE 社員データ WHERE 社員番号=005
(4)SELECT INTOステートメント
SELECT INTOステートメントは既存テーブルからデータを取り出して新しいテーブルに格納するというステートメントです。
■構文 SELECT <列名> INTO <新規のテーブル名> FROM <既存テーブル名> where <検索条件>
■ローカル一時テーブル、グローバル一時テーブル
ローカル一時テーブルはそのテーブルを作成したセッションでのみ使用できる一時テーブルのこと、グローバル一時テーブルはそのテーブルを作成した以外のセッションでも使用できる一時テーブルです。ローカル一時テーブルはテーブルの前に#を付加し、グローバル一時テーブルはテーブル前に##を付加します。
■例 Select * INTO #社員データ004以降 FROM 社員データ WHERE 社員番号 >=004
(5)INSERT INTOステートメント
■構文 SELECT INTO <テーブル名><Selectステートメント>
■例 INSERT INTO 社員データ2 SELECT * FROM 社員データ
社員データテーブルの中のすべての列からデータを抽出し、社員データ2テーブルに格納せよというステートメントです。
9.データベース定義
(1)データベースの作成
データベースを新規に作成するにはCREATE DATABASEステートメントを使用します。SQL ServerではCreate Databaseによりデータファイルとログファイルを作成するステートメントです。
■構文
Create DATABASE <データベース名> ON (NAME =<論理ファイル名>,FILENAME=’<物理ファイル名>’,SIZE=<初期サイズ>,MAXSIZE=<最大サイズ>,FILEGROWTH=<増分値>) LOG ON (NAME=<論理ファイル名>,FILE NAME=’<物理ファイル名>’,SIZE=<初期サイズ>,MAXSIZE=<最大サイズ>,FILEGROWTH=<増分値>)
①<データベース名>
作成するデータベースの名前を指定します。
②<論理ファイル名>
データファイル、ログファイルの論理名を指定する。論理名とはSQL言語でそのファイルを扱う際に使用するファイル名である。
③<物理ファイル名>
データファイル、ログファイルの物理名を指定する。物理名とはWindows上でエクスプローラなどを使って普通にファイルを扱う際に使用するファイル名
④<初期サイズ>
データファイルとログファイルの初期サイズを指定する。
⑤<最大サイズ>
データファイルとログファイルを最大でどのくらいの大きさまで拡張できるかを指定する。
⑥<増分値>の部分
データファイル、ログファイルを拡張する際、どのくらいの単位で拡張するかを指定する。
■CREATE DATABASE使用例
CREATE DATABASE Sample ON(NAME=Datafile,FILENAME=’c:\ProgramFiles\data\sampledata.mdf,Size=5MB,MAXSIZE=5MB,FILEGROWTH=1MB)
LOG ON (NAME=Logfile,FILE NAME=’c:\Program FILES\DATA\LogSample.ldf’,SIZE=1MB,MAXSIZE=5MB,FILEGROWTH=1MB)
10.データベース拡張
データベースのデータファイルやログファイルの拡張が必要になる場合はALTER DATABASEステートメントを使用します。データベースのサイズ拡張には次の3つの方法があります。
①データファイル、ログファイルが自動的に拡張されるように設定
②データファイルやログファイルのサイズを手作業で変更
③手作業でデータファイル、ログファイルを新たに追加する
■使用例
ALTER DATABASE Sample ADD FILE(NAME=Datafile2,Filename=’c:\ProgramFiles\Data\SampleData2.ndf’,Size=5MB,MAXSIZE=20MB)
ALTER DATABASE Sample MODIFY FILE(NAME =Logfile, SIZE=2MB)
11.テーブルの作成と削除
テーブルの作成にはCREATE TABLEステートメントを使用します。
■構文 CREATE TABLE <テーブル名>(<列名><データ型> NULL|NOT NULL)
NULL|NOT NULLについては列にNULLを入れるかどうかを指定します。
■使用例 Create table 社員データ(社員番号 int NOT NULL,社員名 varchar(20) NOT NULL,給与 money NULL
このステートメントは社員データという名前のテーブルが作成され、このテーブルにはNULLが許可されない社員番号(整数)、NULLが許可されない社員名(文字データ)NULLが許可される給与の列ができます。テーブルの削除にはDROP TABLEステートメントが使用されます。
■構文 DROP TABLE<テーブル名>
12.ビューの作成
ビューは使用頻度の高い検索(SELECTステートメント)の内容をデータベースにあらかじめ記憶させておくものであるが、検索を行うことによってその結果によってテーブルが作成されるのでデータが保存されていない仮想的なテーブルと見ることができます。ビューの作成にはCREATE VIEWステートメントというステートメントを使用します。
■構文 CREATE VIEW <ビュー名> AS <SELECTステートメント>
■使用例 Create View 給与20万以上の社員リスト AS Select * FROM 社員データ Where 給与 >=200000
■ビュー使用のメリット
①ユーザーに必要なデータだけを集めることができる。
②複雑なデータベース、テーブルを用意に使用できるものにする。
③不適切なユーザーにテーブルの使用権限を与えずにすむ。
13.整合性制約の定義
データベースのデータは一環していて矛盾がなく、正確なものである必要がある。それを整合性と呼ばれるが、整合性には3つの種類があります。
①ドメイン整合性
ドメイン整合性とは列のデータが一定の条件に適合したものであること
②実態整合性
テーブルのデータに重複がないことを意味する。
③参照性合成
外部キーと参照先の列のデータに矛盾がないことを意味する。
(1)ドメイン整合性
ドメイン整合性を維持するには、DEFAULT制約、CHECK制約を定義します。
①Default制約
DEFAULT制約とはINSERTステートメントの列の規定値を指定する為のルールです。INSERTステートメントが列にどのようなデータを入れるかを指定しなかった場合、自動的に列に入力されるデータのことです。
■DEFAULT制約構文例
CONSTRAINT <制約名> DEFAULT <規定値>
<制約名>:制約の名前を指定する
<規定値>:規定値を指定する
DEFAULT制約の制約名の先頭には通常DFをつけます。
■使用例
ALTER Table 社員データ ADD CONSTRAINT DF_depcode DEFAULT 001 FOR 部署コード
社員データテーブルの部署コードの列の規定値を001にするDF_depcodeという名前のDEFAULT制約の名前です。
(2)CHECK制約
■CHECK制約
CHECK制約はテーブルの列に入力する値に制限をかけ、規定外のデータがテーブルに入力されることがなくなります。
■CHECK制約構文 Constraint <制約名> CHECK(<条件式>)
CHECK制約の制約名の先頭には通常CK_をつけます。
■使用例
ALTER TABLE 社員データ ADD CONSTRAINT CK_pay CHECK(給与>=200000)
このステートメントは社員データテーブルの給与列のデータを20万以上に制限します。
(3)実態の整合性
実態の整合性を維持するにはPRIMARY KEY制約、UNIQUE制約を定義します。PRIMARY KEYの制約は次の通りです。この制約はテーブルの主キーを制約するためのもの。以下の3点に注意します。
①主キーは各テーブルに一つだけ指定することができる
②主キーとなった列ではNULLは許可されない
③主キーとなった列に関してはインデックスが自動的に作成される。このインデックスはデータ重複が排除される。
■PRIMARY KEY制約構文例
CONSTRAINT <制約名> PRIMARY KEY CLUSTERED | NONCLUSTERED(<列名>)
CLUSTERD|NONCLUSTEREDは自動的に作成されるインデックス種類の選択であり、CLUSTEREDはクラスタ化インデックス
NONCLUSTEREDは非クラスタ化インデックスが作成されます。PRIMARY KEY制約の制約名先頭には通常PK_をつけます。
■PRIMARY KEY使用例
ALTER TABLE 社員データ ADD CONSTRAINT PK_empid PRIMARY KEY CLUSTERED(社員番号)
社員データテーブルの社員番号列を主キーとするステートメントであります。
(4)UNIQUE制約
主キー以外の列に関してデータ重複を排除するためのものであり、この制約を定義した例ではデータ重複ができません。UNIQUE制約を定義する際は次の点に注意します。
①各テーブルには複数定義できる
②NULLは列につき一つだけ許可される。
③UNIQUE制約を定義した列に関してはインデックスが自動的に作成される。このインデックスではデータ重複が排除される
■UNIQUE制約構文例
CONSTRAINT <制約名> UNIQUE CLUSTERED|NONCLUSTERED(<列名>)
UNIQUE制約の制約名の先頭には通常UK_をつける。
■使用例
ALTER TABLE 社員データ ADD CONSTRAINT UK_depcode UNIQUE ClUSTERED(部署コード)
社員データテーブルの部署コード列からデータの重複を排除するステートメント
(5)参照整合性
①FOREIGN KEY
参照整合性を維持するにはFOREIGN KEY制約を定義します。
■構文例
CONSTRAINT <制約名>FOREIGN KEY(<制約>)REFERENCES <テーブル名>(<列名>)
FOREIGN KEY制約の制約名の先頭には通常FK_をつけます
■使用例
ALTER TABLE 部署データ ADD CONSTRAINT FK_empid FOREIGN KEY(社員番号) REFERENCES 社員データ(社員番号)
この場合は部署データテーブルの社員番号の列を外部キーとするステートメントである、参照先となるのは社員データテーブルの社員番号列です。
②CASCADE/NOACTION
その他CASCADE、NOACTIONといったオプションを指定することもできます。
CASCADEオプションを指定すると連鎖参照整合性と呼ばれる整合性が維持されるようになります。これは参照先の列のデータが変更・削除されるとそれにともなって外部キーでもデータが変更・削除が行われます。NOACTIONオプションは参照先の列でデータの削除、更新ができなくなります。
■構文例
CONSTRAINT <制約名> FOREIGN KEY (<列名>) REFERENCES <テーブル名>(<列名>)ON DELEATE CASCADE|ON UPDATE CASCADE
CONSTRAINT <制約名> FOREIGN KEY (<列名>) REFERENCES <テーブル名>(<列名>)ON DELEATE NOACTION | ON UPDATE NOACTION
尚、ON DELEATE NOACTION、ON UPDATE NOACTION は規定値なので何も指定しないと自動的にこのオプションは有効です。
14.問合せの最適化
SQLServerにはクエリオプティマイザと呼ばれる機能があり、これによって問合せの処理が最適化されます。最適化とは処理のために必要となるコンピュータ資源をできる限り減らし、処理速度を向上させることができます。
(1)最適化手順
SQLステートメントの評価を行い、その結果をもとに最適な実行方法(実行プラン)がどのようなものかを判断します。SQLステートメントの評価としては次の方法があります。
[SQLステートメント評価]
①問合せ対象となるテーブルについてインデックス有無を調べる。インデックスがあればそれが問合せ効率化にどの程度役に立つか調べる
②問合せでテーブルを結合する場合は最も効率的な結合の順序や結合方法を判断する。
③実行プランを立てその中でページの入出力、CPU使用率が最も低いと思われるものを選択する。
[コストページ最適化]
ページI/O,CPU使用率をまとめてコストと呼びます。クエリオプティマイザはコストが最も低い実行プランを選択するが、この最適化の方法をコストベースの最適化と呼びます。
(2)結合最適化
クエリオプティマイザには問合せ中に結合演算が含まれています。選択肢となる結合方法は、ネスト化ループ結合、マージ結合、ハッシュ結合の三種類があります。
①ネスト化ループ結合
結合する二つのテーブルのうち一方が外部テーブル、もう一方を内部テーブルとし、外部テーブルから一行選択されその行と結合できる行が内部テーブルのすべての行の中から検索される。
結合対象となるデータが比較的少ない場合に有効である。
②マージ結合
二つのテーブルからそれぞれ1行が選択され、比較される。両者が一致しなければ小さいほうのデータが破棄されそのデータが属するテーブルから次の行のデータが取り出され、再度比較される。
マージ結合はテーブルのデータがあらかじめソートされている場合に有効な方法である。
③ハッシュ結合
基準となるハッシュキーとする列とし、ハッシュテーブルで一致したものは結合作成されるテーブルに組み込まれる。
ハッシュ結合はテーブルにインデックスがない場合や、インデックスがあってもあまり役立たない場合に有効である。
15.まとめ
(1)ANSI SQL-92とは
1992年に制定されたSQL言語
(2)データ定義言語(Data Definition Language)とは
データベースのオブジェクトを作成する、オブジェクトに関する設定を変更する、オブジェクトを削除するなどの用途に使用される言語
(3)データ操作言語(Data Manipulation Language)とは
データベースの検索、データの追加、更新、削除などの用途に使用される言語
(4)データ制御言語(Data Control Language)とは
データベースオブジェクトに対する権限の制御に使用される言語
(5)データ型とは
データベースに格納されるデータの種類であり、主なところはINT,maney,charなどがある。
(6)比較演算子とは
比較演算子はWhere句で使用される演算子であり、=,>,<,>=,<=,<>がある。
(7)ワイルドカード
Where句の検索条件の指定で文字列の代わりに使用できる文字でありワイルドカード文字と呼ぶ。
%,-,[],[^]がある、
(8)論理演算子
Where句の検索条件に条件を指定する場合に使用する。演算子にはAND,OR,NOTがある。
(9)算術演算子
数値に関して加減乗除などの算術演算を行うことが可能である。算術演算子は加算+,減算-,乗算*,除算/,剰余%とある。
(10)集計関数
集計関数とはデータベースのデータについて、平均値、最大値、最小値、合計値などを求めるための関数の総称。
AVG:平均値
COUNT:行数を求める
MAX:最大値を求める
MIN:最小値を求める
SUM:合計値を求める
(11)副問合せ
Selectステートメントの中にSELECTステートメントを埋め込むことができ、それを副問合せと呼ぶ。
(12)相関副問合せ
相関副問合せとは外側のSelectステートメントで選択された行1つ1つにつき1回ずつ実行される副問合せである。
(13)結合
同時に複数のテーブルを対象として複数のテーブルを組み合わせて新たな一つのテーブルを作成する。
(14)UNION演算子
複数のSELECTステートメントの実行結果を結合するもの。
SELECT ステートメントUNION SELECT ステートメントで結合する。
(15)整合性
データベースのデータが一貫していて矛盾がなく、正確なものであること。
(16)クエリオプティマイザ
問合せ資源の最適化処理のこと。
データベース アーキテクチャ
Categories: MCA Database
1.物理アーキテクチャ
(1)データファイルとトランザクションログファイル
SQLServerではすべてのデータベースがデータファイルとトランザクションログファイルから構成されています。データファイルはデータベースのすべてのオブジェクトを格納するファイル、トランザクションログファイルはデータベースにどのような変更が加えられたかを記録するファイルです。データファイルはmdf、トランザクションログファイルの拡張子はldfとなる。またセカンダリデータファイルを作成する場合は拡張子はndfです。
(2)ページとエクステント
SQLServerではデータは8KBごとにブロックに分けて格納され、このブロックをページと呼び8つのページの集合をエクステントと呼ばれています。
(3)データアクセス方法
SQLServerではデータをアクセスするにはテーブルスキャンという方法とインデックスを利用する方法があります。テーブルスキャンはテーブルのデータから直接必要なデータを検索し、抽出する方法、インデックスは書籍の目次から索引するような方法でデータに指標をつけ取り出す方法です。
テーブルスキャンはテーブルのすべてのページのすべての行を順に検索し、指定の条件に合致する行を取り出します。インデックスを地用したアクセスの場合はインデックスを検索し、その中から指定の条件に合致したデータを取り出します。
2.インデックス設計
(1)インデックス
インデックスとはテーブルのデータを効率よく検索できるよう作成するデータのことです。データベースのインデックスはテーブル中の特定の列のデータを抽出してファイルにまとめたものです。インデックスの作成された列のことをインデックス列と呼び、インデックス列内のデータをキー値と呼び、複数列をまとめてインデックスにしたものを複合インデックスと呼んでいます。
(2)インデックスのメリットとデメリット
インデックスを作成すればデータへのアクセスを効率化できるが、大量のディスクが必要になり、データ更新時のオーバーヘッドが大きくなるデメリットが生じてきます。インデックスを作成すべきかどうかは各列についてメリットとデメリットを考慮して決めていきます。
①インデックス作成でメリットがある列
・主キーと外部キー
・頻繁に検索される列
・行がソートされた状態で利用されることが多い列
②インデックス作成でメリットがない列
・ほとんど参照されない列
・データの重複が多い列
・頻繁に行う検索で大部分の行が抽出される列
(3)インデックスの種類
SQL Serverのインデックスにはクラスタ化インデックスと非クラスタ化インデックスの2種類があります。
①クラスタ化インデックス
クラスタ化インデックスはインデックスの階層構造の再開レベルがデータベースになるインデックス方式であり、インデックスは一つのテーブルにつき1つしか作成できません。
②非クラスタ化インデックス
非クラスタ化インデックスはインデックスの階層構造とデータページが完全に分離したインデックスであり、非クラスタ化インデックスのリーフレベルにある各行のデータにはどのデータファイルでどのデータページのどの行に格納されているのか識別子が必要です。このインデックスを使用した場合はデータページのデータはソートされません。非クラスタインデックスはテーブル1つ249個まで作成が可能です。
3.逆正規化
逆正規化とはデータベースをあえて正規化にしないこと、一般に正規化を行えばデータベースは重複のない扱いやすいものになりますが、正規化することでテーブルが複数になり検索が非効率になってしまうということもあり得るため、正規化を行わないケースがあります。
(1)テーブルの変更時の整合性に問題
逆正規化を行ったテーブルの場合、データを変更することによって矛盾が生じるデータがあります。細心の注意を払ってデータの変更を行う必要があります。
(2)検索の仕方によっては非効率
正規化によって2つに分割されるテーブルの両方を対象に行わなければならない検索、逆正規化によって効率があがりますが、逆正規化によってテーブルが大きくなってしまうため、非効率になるケースもあります。
4.まとめ
①データファイルとは?
データベースの全てのオブジェクトを格納するファイル
②トランザクションログファイルとは?
データベースがどのような変更が加えられたか記録するファイル
③ページとは?
データは8KBごとにブロックに分けて格納されるがこのブロック1単位のこと
④エクステントとは?
ページが8つ集合した単位をエクステントと呼びます。
⑤テーブルスキャンとは?
テーブルのデータから直接必要なデータを検索し抽出する方法
⑥インデックスキーとは?
インデックスとはテーブルのデータを効率よく検索できるよう作成するデータであり、データベースのインデックスはテーブル中の特定の列のデータを抽出してファイルにまとめたもの。
⑦B-Tree
行の数が増えてルートページに入りきらなくなった場合は新たなページが割り当てられ残りの行はそのページに格納される。インデックスページが増えると階層構造になりこのようにしてページを増やしていく方式をB-Treeという。
⑧クラスタ化インデックス
クラスタ化インデックスはインデックスの階層構造の最下位レベルがデータページになるインデックスである。
⑨非クラスタ化インデックス
インデックスの階層構造とデータページが完全に分離したインデックスのこと。
⑩逆正規化
データベースをあえて正規形にしないことであり、正規化をしないことでテーブルを増やす必要がなくなる。正規化による検索効率が下がるのを防ぐ。
⑪リーフレベル
階層構造の再開のレベルにあるページのことでそれ以外のページを非リーフレベルと呼びます。
データベース SQLServer
Categories: MCA Database
1.SQL Serverのアーキテクチャ
SQLServerはDBMS(Database management System)の代表例であり、リレーショナルデータベースに対応することからRDBMS(Relational Database Management System)と呼ばれています。RDBMSの他の例としてはOracleがあります。
SQLServerの機能としては点があります。
(1)SQL Serverの機能
①トランザクション処理
②データを分析する
③データベースアプリケーションの作成を支援
④データベースアプリケーションの実行
2.SQL Serverの歴史
①SQLServer1.0(1989年発表)
UNIX向けDBMSだったサイベース社のSybaseをもとにOS/Sに移植されたのが始まりです。
②SQLserver4.2(1994年発表)
Windows NTに対応されました。
③SQLServer6.0(1995年)―SQLServer6.5(1996年発表)
WindowsNT用のDBMSで4.2を拡張したものです
④SQLServer7.0(1999年)
マイクロソフト独自の特性を持つようになり、アーキテクチャ、管理を自動化する機能も多く取り入られるようになりました。このバージョンではWindowsNT、Windows2000両方に対応しています。
⑤SQL Server2000(2000年発表)
インターネット対応機能が充実、小規模から大規模なシステムにまで対応できるスケーラビリティ、信頼性の向上が追加されました。
3.SQLServerの4つのサービス
SQLServerにはインストール時にデフォルトで4つのサービスがインストールされます。MS SQLServer、SQLServerAgent、MSDTC(Microsoft Distributed Transaction Coordinator)、Microsoft Searchの4つがあります。
①MSSQLServerサービス
データベースエンジンであり、データ追加、削除、変更といった処理を実際に行うプログラムです。その他データベースのデータを管理する機能もあります。
②SQLServerAgentサービス
データベースバックアップなどの管理作業を定期的、自動的に行うサービスです。管理作業を行うスケジュールはユーザーが指定できます。
③MSDTC
分散トランザクション処理を管理するサービスであり、分散トランザクション処理時にサーバー間のデータ矛盾が起きることを防止できます。
④Microsoft Search
全文検索エンジンであり、全文検索に必要なインデックスを作成し、保守する機能を持ちます。
4.インスタンスについて
SQLServerで動作するSQLServerシステムのことをインスタンスと呼び、SQLServer2000では一つのコンピュータ上で複数のインスタンス(マルチインスタンス)を動作させることが可能です。インスタンスは規定のインスタンスと名前付きインスタンスの2種類があり、規定のインスタンスは各コンピュータに1つだけ存在し、名前付きインスタンスは各コンピュータに最大16個まで作成できます。
各インスタンスはMSSQLServerサービスとSQLSearverAgentサービスを単独で保持し、MicrosoftSearchはほかのインスタンスとの共有しています。
5.ネットワークライブラリとは
クライアントアプリケーションはSQLServerが動作するコンピュータと異なるコンピュータ(クライアント)で動作します。その通信を行う場合においてクライアントとサーバー間のネットワークプロトコルにはいくつもの種類があります。
SQLServerにはネットワークライブラリ(Net-Library)というソフトウェアが用意されており、クライアントとサーバーの両方にインストールしておくことでネットワークライブラリがプロトコル間の違いを吸収する為、通信プロトコルが変わってもアプリケーションを書きなおす必要がなくなります。
ネットワークライブラリが対応できるプロトコルには(TCP/IP,NWLINK,IPX/SPX/Appletalk)があります。
6.データベースの種類
SQLServerのデータベースにはインストール時にシステムデータベースとユーザーデータベースの2種類がインストールされています。
(1)システムデータベース
システムデータベースとはシステムやデータベースの操作と管理に使用するデータベースです。デフォルトで次のデータベースがインストールされます。
①MASTER
SQLServerの動作全体の制御に利用されるデータベースであり、ユーザーに関する情報、メモリ割り当て情報、システムエラーメッセージが保持される情報です。
②Model
ユーザーデータベースのテンプレートです。
③msdb
SQLServerAgentサービスが主に使用するデータベース、ジョブのスケジュール、履歴に関する情報です
④tempdb
一時テーブルを格納するためのデータベースとして一時作業領域として使用されています。
(2)ユーザーデータベース
ユーザデータベースとはユーザーが作成し、ユーザーが使用するデータベースです。
①pubs
ユーザーのデータベースサンプル
②Northwind
ユーザーデータベースのサンプル
7.データベースオブジェクト
データベースは何種類かのオブジェクトで構成され、主にテーブル、制約、インデックス、ビュー、ストアドプロシージャ、トリガの6種類があります。
①テーブル
②制約
テーブルの各列に格納する値に関する規則(主キー制約、参照制約)を定義するためのオブジェクトです。
③インデックス
データ検索を効率化するための作成され使用されます。
④ビュー
使用頻度の高い検索内容を保持するオブジェクトであり、仮想的なテーブルを保持しているとも考えられています。
⑤ストアドプロシージャ
SQL言語で書かれたSQLステートメントの集合であり、同じパターンのSQLステートメントを保存しておくことにより効率、ネットワークへの負荷を大きくなるのを防ぐことができます。
⑥トリガ
ストアドプロシージャの一種であるがユーザーがテーブルのデータを変更すると自動的に起動される機能を持つ。ユーザーが任意のタイミングで起動することはできません。
8.システムテーブルとユーザーテーブル
テーブルにはシステムテーブルとユーザーテーブルの2種類があります。
①システムテーブル
システムテーブルはSQLServerがシステムやデータベースを管理するのに使用する情報が格納されるテーブルです。システムテーブルに保存されるデータの属性、意味、格納場所などデータを定義する情報をメタデータと呼ばれています。
②ユーザーテーブル
ユーザーテーブルはユーザーがデータを格納するために作成する普通のテーブルです。
9.データディクショナリ
データディクショナリはシステムテーブルのメタデータを登録、管理している。SQLServerにはメタデータ取得に使用されるストアドプロシージャがあらかじめ用意されています。
(1)主なシステムストアドプロシージャ
①sp_configure
サーバーのオプション設定情報を取得するためのプロシージャ
②sp_helpdb
サーバ上に存在するすべてのデータベースに関して、名前、サイズ、所有者ID、作成日付、オプションといった情報を取得できる。
③sp_dbopinion
データベースのオプション設定情報を取得するプロシージャ
④識別子
データベースオブジェクトにつけられる名前。テーブルの識別子は次のようになる。<サーバー名.データベース名.所有者名.テーブル名>
10.導入
(1)SQL Serverのエディッション
①Standard Edition
小規模なワークグループ、企業部門で使用するのに適したエディッションであるが、データウェアハウス、Webサイトなどをサポートする機能は用意されていません。
②Enterprise Edition
大規模データベース、データウェアハウス、Webサイト、OLTPサポートに対応できる機能を備えたエディッションです。
③Personal Edition
リモード環境、スタンドアロンでデータベースを使用したいユーザー向けエディッションです。
④Developer Edition
機能的にはEnterprise Editionと同じであるが、開発、試験に限って使用が可能なエディッションです。
⑤Windows CE Edition
Windows CE上で動作するエディッションです。
(2)OLTP(ONLine Transaction Processing)
企業の基幹系データベースで行われる処理のことでオンライントランザクション処理とも呼ばれています。具体的にはネットワークに接続された複数の端末からホストコンピュータに何らかの処理要求を行い、ホストコンピュータはその要求の内容にもとづいてデータを処理し、その結果を端末におくる形態の処理です。
(3)インストールパス
SQL Serverのプログラムファイルとデータファイルの規定のインストールパスは次の通りです。プログラムファイルはインストール時から大きくなることはないが、データファイルはサイズが大きくなっていく為、データファイルをおくディスクの容量は余裕を持たせる必要があります。
[プログラムファイル(規定)]
C:\Program Files\Microsoft SQL Server\Mssql\Binn
[データファイル(規定)]
C:\Program Files\Microsoft SQL Server\Mssql\Data
11.SQL Searverの管理ツール
SQL Serverには管理作業の負担を軽減するための管理ツールが用意されています。主な管理ツールとしてはクエリアナライザ、SQL Server Enterprise Managerがあります。
(1)クエリアナライザ
SQLステートメントの作成、実行を支援するツールであり、これによりGUI環境によってSQLステートメントが簡単に作成、実行できます。
(2)SQL Server Enterprise Manager
ローカル、リモートのSQLServerを管理するためのツールです。GUI環境によりSQL言語を使用しなくても管理作業(‘オブジェクト新規作成、オブジェクトのプロパティ確認)が行えます。SQL ServerがインストールされているコンピュータにEnterprise ManagerをインストールするとローカルのSQL ServerはEnterprise Managerに自動的に登録されます。
12.まとめ
①DBMSとは?
データベース管理システムのこと。
②RDBMSとは?
リレーショナルデータベース管理システムのこと。
③SQL Serverの主な機能としてのサービスとは?
SQL Serverの主な機能はサービスと呼ばれるプログラムによって提供される。サービスはSQL Servreが起動されると同時に起動し、バックグラウンドで動作しデータベースアプリケーションからの要求の受付、要求の応答を行う。
④データベースエンジンとは?
データベースエンジンとはデータベースのデータの追加、削除、変更といった処理を実際に行うプログラムである。SQL ServerではMSSQLServerサービスがこの機能を持つ。
⑤インスタンスとは?
実際にコンピュータで動作するSQL Serverシステムのことをインスタンスと呼ぶ。
⑥ネットワークライブラリとは?
SQL Serverでサーバーとクライアント間の通信プロトコルの違いを修正するプログラムである。
⑦システムデータベースとは?
SQL Serverがシステムやデータベースの操作と管理をしようするデータベースです。
⑧ユーザーデータベースとは?
ユーザーが作成し、ユーザーが使用するデータベースである。
⑪データベースオブジェクトとは?
テーブル、制約、インデックス、ビュー、ストアドプロシージャ、などデータベースを構成するオブジェクトである。
⑫ストアドプロシージャ
SQL言語で書かれた命令の集合であり、命令パターンをストアドプロシージャとして保存しておくことで同じ命令パターンを繰り返し記述するのを防ぐ。
⑬トリガ
ストアドプロシージャの一種だがユーザーがテーブルのデータを変更すると自動的に起動される特殊な機能を持つ。ユーザーの任意のタイミングで起動することはない。
⑭メタデータ
システムテーブルに保存されるデータ属性、意味、格納場所などデータを定義する情報をメタデータという。
⑮識別子
データベースのオブジェクトにつけられる名前である。
⑯インストールパス
プログラムインストールの場合にインストール先となるフォルダのこと。
⑰クエリアナライザ
SQLステートメントの作成、実行を支援するツールである。
⑱SQL Server Enterprise Manager
ローカル、リモートのSQLServerを管理するツールであり、GUI環境によりSQL言語を使用しなくても管理作業が行える。
データベース データモデリングについて
Categories: MCA Database
1.データモデリング
データモデルはデータベースがデータがどのような形式で蓄えられるか、データベースの構造がどのようになるかを決める雛形であり、データモデルには概念データモデル、論理データモデルの二種類があります。
(1)概念データモデル
概念データモデルはデータベース化の対象となる現実世界のことがらがどのようになっているかを絵や記号を使って表したものです。ERD(Entity Relationship Diagram)とは概念データモデルに使用される記号系の代表例であり概念データモデルはDBMSに依存しません。
(2)論理データモデル
論理データモデルはデータベースをどのDBMSで運用するかを意識して作成し、データベースを具体的にどのように作成すればよいかを示したものです。概念データモデルとは異なり、DBMSに依存しています。
論理データモデルは階層型データモデル、ネットワーク型データモデル、リレーショナルデータモデルの3つのタイプに大別できます。
階層型データモデルは銀行勘定システムに使用され、ネットワーク型データモデルは航空会社の座席予約システムに使用されています。
(3)現実世界からのデータベースフロー
現実世界のものを例にとってデータベースフローを作る場合、現実世界から概念データモデル、そして論理データモデル作成しデータベースの構築していきます。
2.正規化
(1)正規化
テーブルをリレーショナルモデルの規則に従った正しい形にすることを正規化と呼びます。段階により第一正規化、第二正規化、第三正規化と三段階に分かれます。
また正規化されていない状態のテーブルを非正規化と呼びます。
①第一正規形
非正規形から繰り返し項目を排除した状態のことであり、繰り返し項目が存在する状態とは一つのテーブルの中に同じ属性の列が複数存在する状態です。
②第二正規形
第一正規形の条件を満たし、更に部分関数従属(部分的関数従属性)が排除されている状態を第二正規形とよびます。関数従属とはテーブル中のある列のデータが決まると他の列のデータも決まるという関係をよび、この部分関数従属の状態を排除するためには複合キーを分割しテーブルを分割します。この操作を第二正規形と呼ばれています。
③第三正規形
第三正規形にするには、第二正規形を満たしその上で推移的関数従属を排除する必要があります。推移的関数従属とはA列のデータとB列のデータが決まればC列のデータも同時に決まるということであり、この状態を排除しテーブルを分割する操作を第三正規化と呼ばれています。
(2)正規化をしないことによる弊害
①枠組み変更の問題
繰り返し項目が枠組み以上ある場合にデータ欠落ができてしまい枠組み変更に耐えられない状態となることです。
②挿入異常
データを新たに挿入する際に発生する場合であり、主キー制約に違反が起こってしまう状態です。
③削除異常
データ削除の際に発生する問題であり単一のデータを削除することにより、他のデータの主キー制約に違反してしまう状態です。
④修正異常
データ修正に関する問題であり、単一データを修正する場合に同時に大量のデータ修正が発生してしまう状態です。挿入異常、削除異常、修正異常をまとめて更新異常とよび、この状態は第二正規化、第三正規化を行うことで解決されていきます。
3.ERD(Entity Relationship Diagram)
ERDは(Entity Relationship Diagram)の略であり、概念データモデル作成に使用される代表的な記号系の一つです。ERD構成要素は次の通りです。
(1)ERD構成要素
①エンティティ(実体)
データベースに反映させる現実世界に存在する人や実体のことです。
②リレーションシップ(関連)
エンティティ間の結びつきです。
③アトリビュート(属性)
エンティティの性質、特性を現すデータのことです。
(2)リレーションシップの関係
データベースを構築する上でデータの関係を理解することが必要です。その関係は 1対1 1対多 多対多があります。連関エンティティでは二つのエンティティの主キーを組み合わせたものを主キーとしています。またERD記法にはその他代表的なバックマン記法の他、鳥の脚記法、IDEF1X記法などがあります。
(3)スーパータイプとサブタイプ
①ISAリレーションシップについて
リレーションシップには1対1、1対多、多対多の3種類の分類以外に上下のリレーションシップがあります。上位のエンティティをスーパータイプエンティティ、下位のエンティティをサブタイプエンティティと呼びこの上下関係をISAリレーションシップと呼ばれています。
②特化と汎化について
上位エンティティを定義する作業を汎化と呼び、下位エンティティを定義することを特化と呼びます。
4.まとめ
■概念データモデルとは?
データベース化の対象となる現実世界のことがらがどのようになっているかを絵や記号を使って表したものです。
■論理データモデルとは?
データベースをDBMSを意識し具体的にどのように作成するかを示したものです。
■記号系とは?
概念データモデルを作成するためにデータの様子を絵や記号で表示したもので主にERDがあります。
■三層スキーマモデルとは?
データモデルを3つに分類する考え方であり、1978年ANSI/SPARKによって提案されたものです。3層スキーマモデルのスキーマは概念スキーマ、外部スキーマ、内部スキーマの3種類あり、概念スキーマは論理データモデルのことで、外部スキーマはコンピュータ上での表示画面などエンドユーザーから見た目を定めるスキーマ、内部スキーマはデータベースの物理的な構造を定めるスキーマのことです。
概念スキーマと外部スキーマ間のデータ独立性を論理的データ独立性といい、概念スキーマと内部スキーマ間の独立性を論理的データ独立性とよばれています。
■ボイスコット正規形とは?
第三正規形までの正規化段階です。
■関数従属とは?
従属列が主キーの一部分ではなく主キー全体にのみ従属することでこの状態を完全関数従属とよばれています。
■更新異常とは?
非正規化による挿入異常、削除異常、修正異常がおこる状態です。
■拡張ERDとは?
長方形と実勢のみでエンティティ、リレーションシップ、アトリビュートを表すERDのことです。
■エンティティタイプとは?
データベースに反映させる現実世界に存在する人や物の実体のことです。
■リレーションタイプとは?
エンティティ間の結びつきや関係のことです。
■インスタンスとは?
個々のエンティティ、リレーションシップのことをよびます。
データベース リレーショナルモデルについて
Categories: MCA Database
1.リレーショナルモデル構造
(1)データモデル
データベースがどのような形式で蓄えられているかデータベースの構造を決める雛形をデータモデルとよびます。どのデータモデルを使用するかによりデータベース構造が変わっており、リレーショナルデータベースに使用されるモデルについてはリレーショナルモデルと呼ばれています。
(2)リレーショナルモデル
データベースを二次元の表の集まりにし、データの集合から構成されるデータベースのことであり、数学の集合を基礎としたモデルのことを呼びます。
(3)リレーショナルモデル特徴
リレーショナルモデルの特徴としては以下の点があります。
①同じ集合に属するデータには共通の性質がある。
②要素を重複しないこと
③要素の順序には意味がないこと
④列は重複しないこと
⑤列の順序には意味がないこと
2.リレーショナルデータベースのキー
(1)要素の識別
リレーショナルデータベースにおいて集合の要素を明確に識別するのに役立つ列のことをキーといい、他集合の要素が重複して支障がでるのを防ぐことができます。
(2)外部キー
外部キーとはある表から他表の情報を算出するために使用される列のことをよびます。他テーブルと結合する場合などに使用されます。
(3)整合性制約
リレーショナルデータベースには利用に際して問題が生じないよう、いくつかのルールの中の一つとして整合性制約があります。主な整合性制約としては以下の点があります。
①主キー制約
主キーに使用する列ではデータを重複させたりデータを欠落させることはできない。
②参照制約
外部キーはほかの表と共通する列であり、参照先の列にないデータが外部キーにあってはならないということ。ただし主キーとは異なりデータの欠落、重複はでてきます。
③ドメイン制約
データベースの個々の列にどのような範囲のデータを格納できるかを定めるルールであり、それ以外のデータは格納できなくするものを呼びます。
(4)データ操作
リレーショナルデータベースのデータに対して行える操作は集合を基礎としている為、演算によってもデータ操作が可能となっています。集合としてベーステーブル、導出テーブルがあります。
①ベーステーブル
データベースに格納されている表のこと
②導出テーブル
データベースのデータを検索した結果として一時的に作成されるテーブルのこと。
③ビュー
データベースの中で使用頻度の高い検索の内容をデータベースに記憶させておき、記憶された検索内容のことをビューという。
3. リレーショナル演算とは
リレーショナルデータベースは集合を基礎としているため、データ操作も数学の集合に用いるのと同じような演算によって行います。この演算のことをリレーショナル演算と呼びリレーショナル演算は二つの種類に大別できます。
(1)集合演算
和集合演算、差集合演算、共通集合演算、直積集合演算を使用します。
①和集合演算と差集合演算
二つの集合の和集合を求める演算でありA U Bです。リレーショナルデータベースに行う和集合とは、二つのテーブルのデータを集めて新たなテーブルを作成します。二つのテーブルにまったくのデータが存在する場合、和集合演算を行うと一方は削除されます。
②差集合演算
差集合演算とは二つの集合の差集合を求める演算のことです。
③共通集合演算
共通集合演算は二つの集合の共通部分を求める演算(A∩B)のことです
④直積集合演算
二つの集合の要素のすべての組み合わせを集めた集合を求める演算です。
(2)リレーショナル代数固有演算
リレーショナル数固有演算は射影演算、選択演算、結合演算、商演算の4つがあります。
①選択演算
選択演算とはリレーショナルデータベースのテーブルから特定の条件を満たす行だけを抽出する演算のことです。
②射影演算
リレーショナルデータベースのテーブルから条件を満たす列だけを抽出する演算です。
③結合演算
リレーショナルデータベースの二つのテーブルを結合する演算であり、共通する列のデータが二つのテーブルの間で一致している行だけをのこす演算と一致していない行も残す演算の二つの種類に分けられます。前者を自然結合、後者を外部結合と呼ばれています。
④商演算
二つのテーブル間でデータが完全に一致している部分を含む行を抽出する演算です。
4.まとめ
■データベースでのモデルとは?
設計図、雛形、原型の意味であり、データベースで言われるモデルとはデータベース構造、雛形のことである。
■リレーションとは?
関連するデータを集合させ関連付けること。
■ドメインとは?
別名定義域とよばれ、個々の集合にどのような要素がぞくすることができるかはあらかじめ決まっており、属することのできる要素の範囲を定義域、ドメインと呼ぶ。(例:日付の集合であれば、ドメインは1/1~12/31になる)
■キーとは?
集合の要素を明確に識別するのに役立つ列のことをキーという。
■整合性制約とは?
主に主キー制約、参照制約、ドメイン制約からなるリレーショナルモデルに格納するデータのルール。
■ベーステーブルとは?
データベース用語では動物名や所属科名のような集合をベースリレーションといい、ベースリレーションにより構成されるテーブルをベーステーブルと呼ぶ。
■導出テーブルとは?
データベースのデータを検索した結果として一時的に作成されるテーブルのこと。検索結果のテーブルである。
■ビューとは?
あらかじめ使用頻度の高い検索の内容をビューという。
■リレーショナル演算とは?
主に集合演算、リレーショナル代数固有演算からなり、集合演算には和集合、差集合、共通集合、直積集合、リレーショナル代数固有演算には選択演算、射影演算、結合演算、商演算とある。
■自然結合とは?
直積演算、選択演算、射影演算を組み合わせて行う演算であり、二つのテーブルの間で一致した行だけを残す演算
■外部結合とは?
直積演算と射影演算の組み合わせであり、二つのテーブル間で一致していない行も残す演算である。
データベース データベースとは
Categories: MCA Database
1. データベースの役割
1.データベース
DBMS(Database Management System)
データベースのデータを操作し利用するためのプログラムであり、日常の業務を効率よくこなすためにデータを管理するプログラムのことです。蓄えたデータを操作し、利用するまでのプログラムまでを含めてデータベースアプリケーションと呼びます。
データベース普及以前に使用されていたのはファイルシステムがあり、COBOLなどの言語で作成したプログラムでデータを扱っていました。特徴としてはプログラムとデータが独立していない為、プログラムとデータが密接に結びついていました。
(1)データベース特徴
データベースの特徴はデータがあらゆるプログラムから独立して作動するためデータベースを様々なプログラムで利用できることを意味します。
主な特徴は次の二点があります。
①データ独立性
あらゆるプログラムから独立していること。
②データ統合化
あらゆる種類のデータをひとつにまとめ一元管理できるようにすること。
(2)リレーショナルデータベース
データを縦(カラム)と横(ロー)の列からなる二次元の表の形で保管するデータべースのことで特徴としてはディスク上での保管形式とユーザーが見る保管形式にはまったく関係性がなくユーザーからはあくまで表として取扱うことができます。
(3)データベース種類
データベースの種類にはリレーショナルデータベースの他、階層型データベース、ネットワーク型データベースがあります。
①階層型データベース
下位データが一つの上位データに属する構造になっているデータベースでありたとえば企業でいえば、部署とその下にある課のような構造です。
②ネットワーク型データベース
下位データが複数の上位データに属する構造になっているデータベースです。
(4)基幹系データベースと情報系データベース
データベースは使用用途により大きく二種類のデータベースに分かれ、基幹系データベースと情報系データベースです。
①基幹系データベース
商品在庫や銀行口座等のの日常業務データで使用されるデータベースです。
②情報系データベース
日常の業務がどのように行われてきたかという実績や履歴のデータを蓄積するために使用されるデータベースであり、主に情報系から基幹系へのフィードバックループを行うことで基幹系データベースに修正が加えられています。特徴としては情報系データベースは大量のデータを処理して一つの答えを得るという使い方をする為、一般的に基幹系データベースに比べて一回の使用に非常に長い時間を要します。
2.データウェアハウス
情報系データベースの別称であり基幹系システムの日常業務処理の大量のデータが保管されています。
3.まとめ
■データベースアリケーションとは?
SQL,Oracleなどのデータを利用するアプリケーション。
■ファイルシステムとは?
データベース普及以前に使用されているシステムでありCOBOLなどの言語で作成したプログラムでデータを扱います。特徴としてはプログラムとデータが独立していない為、密接に結びついています。
■データ一元管理とは?
顧客名簿、売上データ、受注データなど異なったデータを一つにまとめ一元管理できること、ファイルシステムとデータベースの違いとなっています。
■テーブルとは?
データベースを表示する為にデータを縦(カラム)と行(ロー)と呼ばれる二次元の表の形でユーザーに表示されるものです。
■データウェアハウスとは?
情報系データベースのことで、基幹系データベースの日々の業務処理の実績、履歴を保管しておき、最終的に基幹系データベースにフィードバックループを行うためのシステムです。