数据库的基础知识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

继续

 

广告
将在 10 秒后关闭
bannerAds