数据库的基础知识1(数据模型~SQL)
关于这篇文章
本文将以备忘录形式,记录我学到的基础知识。希望本文中的某些关键词能帮助读者进行查找,因此将其作为文章发布在Qiita上。
数据库的重要性 de
-
- システム間でデータ共有
-
- 一元管理(整合性を保つ)
- バックアップと復旧
数据模型的种类
-
- ツリー型
ツリー構造
親 -< 子 ネットワーク型 親 >< 子
リレーショナル
表形式
オブジェクト型
データを1つのオブジェクトとして管理
画像・音声・動画など多様な形式のデータを纏めて管理することに適している
XML型
XMLで表現した文書やデータをそのまま階層構造で格納でき、それらを自由に検索・抽出できる
NoSQL
ACID特性に縛られない
多種多様なデータを保存できるので変更に対する対応力が高い
一元管理する必要がないデータを分散化し、処理スピードを向上させることができる
データの堅牢性に期待はできない
カラム指向性
Cassandra: Twitterの書き込みデータ
Hbase: Facebook,LINEのメッセージ機能
ドキュメント指向型
MongoDB: McAfeeのセキュリティデータ
キーバリュー型
Riak: Yahooのキーワード検索
グラフ指向型
Neo4j: Ciscoのネットワーク監視
关系型数据库
特点
-
- 2次元の表形式でデータを管理
-
- 表間にリレーションを定義することができる
- 関連を利用してデータを定義することで、効率的なデータ管理が可能になる
关系
- データを関連する項目で2次元の表形式にまとめたもの
主键(PRIMARY KEY)
-
- デーブル内で、そのレコードが一意(ユニーク)なものであることを示すカラムのこと
-
- そのため主キーの値が同じレコードは複数存在しないことが保証される(一意性制約)
-
- 複数のカラムを合わせて主キーにすることもできる
- 基本的にはテーブル毎にプライマリキーが作成される
外部键(FOREIGN KEY)
-
- 他のテーブルのプライマリキーを参照しているカラム
-
- そのため外部キーの値が、参照するテーブルに存在する必要がある(参照整合性制約)
- 外部キーの値は参照しているテーブルのカラムに存在する値、またはNULLでなければならない
SQL = 结构化查询语言
大纲
-
- Structured Query Language
-
- データベースにアクセスするための言語
- ISOやJISによって標準化されているため、特定のDBMSに依存しない(ただ方言のようなものはある)
种类
-
- DML(Data Manipulation Language)
格納されているデータの検索・変更・追加・削除するための操作
select
insert
update
delete(where句で削除するデータを指定可能な上、コミットしていなければrollback可能)
merge(レコードのマージ)
DDL(Definition)
データを格納する表の作成や削除、データにアクセスできるユーザーの定義を行うための操作
create
alter
drop(表内オブジェクト=表構造の全削除)
rename
truncate(デーブルの切り捨て = 表内データの全削除)(高速だがrollback不可)
DCL(Control)
データベースに対するアクセス制御を行うための操作
grant
revoke
トランザクションの制御を行う操作
commit
rollback
savepoint
例えばストアドプロシージャ(トランザクションをDBMSに保存したもの。SQLインジェクションの対策や、量が増えすぎなければレスポンスの改善に繋がる。ストアドファンクションとの違いは、プロシージャは戻り値がなく、ファンクションには戻り値がある点)を構成する複数のファンクションをsavepointで分割することによって、1つのファンクションが失敗しても簡単にデータのリストア・リカバリ・再実行を行うことができる
限制
-
- not null
-
- unique (nullはok)
-
- check
-
- primary key(not null && unique)
- foreign key
继续