データベースの概要(MySQLの例)

9014 ワード

データベースの概要(MySQLの例)
一、データベースの概念
1.データベースはユーザーがデータを保存し、データにアクセスし、データを操作する倉庫であり、ユーザーの各種データは組織的にデータベースに保存される.権限のあるユーザーによって、いつでもクエリー、統計、追加、削除、変更できます.データベースは長期にわたってコンピュータに格納され,組織的で共有可能なデータ集合であるといえる.
実際の使用では、データベースとアプリケーションの関係は、アプリケーションがデータベースにデータを要求し、結果を表示するために使用され、データベースに操作とクエリー命令を発行し、データベースシステムがデータベースサーバにインストールされ、データベースがデータを格納し、データベースサーバがアプリケーションに応答し、データを提供することができます.
また、データベースシステムの成熟したフラグは、データベース管理システムの出現である.
データベース管理システム(DataBase Management System、略称DBMS)は、データベースを管理するソフトウェアであり、すべてのデータの知識ベースとして機能し、そのストレージ、セキュリティ、一貫性、同時操作、リカバリ、アクセスに責任を負い、データベースの完全かつ統一的な管理と制御メカニズムである.データベース管理システムは、データの迅速な検索とメンテナンスを実現するだけでなく、データのセキュリティ、完全性、同時制御、データ復旧を保証します.データベース管理システムの核心は、大量のデータを格納するためのデータベースです.DBMSはすべてのデータのKnowledge Baseであり、データの保存、セキュリティ、一貫性、同時操作、リカバリ、アクセスに責任を負います.
DBMSには、名前、構造、位置、タイプなど、所有するすべての物事に関する情報を格納するためのデータ辞書(システムテーブルと呼ばれる場合もある)があり、データに関するデータはメタデータ(metadata)とも呼ばれる.
真のデータベースシステムは、ハードウェアとソフトウェアの2つの側面から構成されています.たとえば、Oracleデータベースを使用するには、Oracle社が提供するデータベース・サーバ・ソフトウェアと、データベース管理システムをインストールするための高性能なコンピュータ・サーバをインストールする必要があります.
今日の応用で最も一般的なのは、リレーショナル・データベース管理システムです.現在、Oracle、DB 2、Sybase、MS SQL Server、MySqlなど、市場で流行しているいくつかの大中型データベースは、リレーショナル・データベース管理システムです.
2.リレーショナル・モデル・データベースは「テーブル」を使用してデータを整理します(テーブルは「リレーショナル」と呼ばれます).1つのデータベースは複数のテーブルから構成され、複数のテーブル・データの間に関係が存在します.これらのテーブルのデータ操作は関係に依存し、関係は複数のテーブル間のデータ依存を記述するために使用されます.1対1、1対多、多対多の関係が含まれます.
データベースのいくつかの概念は次のとおりです.
(1)概念モデル:顧客の考え方と観点に基づいて形成された認識と抽象である.
(2)エンティティ(Entity):客観的に存在する、記述可能なもの、例えば従業員、部門を指す.
(3)属性(Attribute):番号、氏名、給与等の属性を使用して従業員の特徴を記述するなど、エンティティが持つ特徴または特性を記述するために使用される.
(4)関係(Relationship):エンティティ間の関連を指し、主に一対一、一対多、多対多の関係を含む.
(5)データモデル:リレーショナルモデルとも呼ばれ、エンティティ、属性、リレーショナルのデータベースにおける具体的な体現である.
(6)リレーショナル・データベース:様々なタイプのデータを格納する「ウェアハウス」は、2 Dテーブルの集合です.
(7)表:エンティティのマッピング.
(8)行と列:行は特定のエンティティのデータを表し、レコードとも呼ばれる.カラムは、エンティティを記述するプロパティのマッピングです.
(9)プライマリ・キーと外部キー:プライマリ・キー(primary key)は、1つのレコードを特定できる一意の識別子です.たとえば、1つのテーブルには身分証明書番号、名前、年齢の3つの属性が含まれています.ここで、身分証明書番号は1つのレコードを一意に特定することができ、他の属性値は重複する可能性があります.したがって、身分証明書番号はこのテーブルのプライマリ・キーです.外部キー(Foriegn Key)は、別のテーブルとの関連付けに使用され、別のテーブルのレコードを特定できるフィールドであり、データの一貫性を維持するために使用される.例えば、Aテーブルの1つのフィールドがBテーブルのプライマリキーである場合、このフィールドはAテーブルの外部キーであってもよい.
3.データベースのデータは最終的にディスクに保存されます.データベースは、データを効率的に管理および操作できることを意味します.
データベースには、大規模、中規模、および小型の区分があるとよく耳にします.これは、データベースがデータ量が大きい場合でも高い運用効率を維持できるかどうかに基づいて区分されます.
次に、オープンソースの中型データベースMySQLを例に、データベースの操作について説明します.デフォルトではmysqlでテーブルを作成するときにテーブルのストレージエンジンを指定しないと、プロファイルmyが使用されます.iniのdefault-storage-engine=InnoDBをストレージエンジンとして使用します.
一般的にmysqlのストレージエンジンは次のとおりです.
(1)MyISAM.読み書き操作を主とし、更新、削除が少なく、トランザクションの整合性、同時性が高くない場合に適用されます.
(2)InnoDB.トランザクションの整合性が高く、同時条件でデータの一貫性が要求される場合に適用されます.InnoDBはmysqlのデフォルトのストレージエンジンです.
(3)MEMORY.テーブルのデータはメモリに格納され、アクセス効率は高いが、サービスが停止すると、テーブルのすべてのデータが失われる.
(4)MERGE.MyISAMテーブルのセットであり、単一のMyISAMテーブルのサイズ制限を突破し、アクセス効率を向上させることができます.
テーブルを作成するときに、create table(...)などのテーブルのストレージエンジンを明示的に指定できます.engine=MyISAM;
二、データベース操作
1.パソコン(Win 7 OS)にMySQLデータベースをインストールし、CMDウィンドウにnet start mysqlを入力してmysqlサービスを開始し、パソコンにnavicatクライアントをインストールしてmysqlを操作できると仮定します.また、DOSウィンドウでmysql(mysql-uroot-p対応のパスワードなど)にユーザー権限でアクセスすることもできます.
2.データベースに含まれるオブジェクトは主に次のとおりです.
(1)テーブル.基本的なデータストレージオブジェクトは、行と列の形式で存在し、列はフィールドであり、行はレコードである.
(2)制約、constraint.データ検証を実行し、データの整合性を保証します.ほとんどのデータベースでは、これらの整合性制約がサポートされています.NOT NULLは空ではありません.UNIQUEキー、PRIMARY KEYプライマリキー、FOREIGN KEY外部キー、Check制約です.コンストレイントを作成するタイミングは、主に2つあります.1つはテーブルを作成すると同時に作成され、もう1つはテーブルを作成した後に作成されます(テーブルを変更します).カラム・レベルまたはテーブル・レベルの制約を定義できます.また、単一カラムの制約と複数カラムの制約もあります.
(3)データ辞書.システムテーブルで、データベース関連情報を格納するテーブルです.
(4)ビュー、view.1つ以上のテーブルデータの論理表示.
(5)インデックス,index.クエリーのパフォーマンスを向上させるために使用します.
3.SQL(Structured Query Language、Structured Query Language、Structured Query Language)は、リレーショナル・データベース上でデータ操作、データ取得およびデータメンテナンスを実行する標準言語です.
まず、データ・テーブルのカラム・タイプを普及させます.
数値型は、整数と浮動小数点数タイプに分けられ、整数タイプにはintなどがあり、浮動小数点数タイプにはfloat、double、decimalなどがある.
日付タイプは、date、time、timestampなどがあります.
文字列タイプは、char(n)、varchar(n)、blob、textなどがあります.
MySqlデータベースでは、SQL文は主に次のように分類されます.
(1)DDL(Data Definition Language):データベース・オブジェクト(ライブラリ、テーブル、カラム、インデックス)に対する操作を定義するデータ定義言語.CREATE、DROP、ALTER、RENAME、TRUNCATEなどを含む.例:
#        
show databases;
#       
create database itszt;
#       
use itszt;
#       
drop database itszt;
#     
create table user(id int primary key auto_increment,stuno varchar(8) unique,stuname varchar(12) not null);
#        
desc user;
#       
alter table user add hobby varchar(10);
#      
alter table user rename student;
#           
rename table user to student;
#         
truncate user;

(2)DML(Data Manipulation Language):データベースに記録される操作を定義するデータ操作言語.含む:INSERT、DELETE、UPDATE、SELECTなど
#  user       
insert into user(stuno,stuname) values('20170001','  ');
insert into user(stuno,stuname) values('20170002','  ');
insert into user(stuno,stuname) values('20170003','  ');
#         
delete from user where stuno='  ';
#         
update user set stuname='  ' where stuno='20170003';
#         
select * from student;
#           (      ),   ,    ,    ,    ,    (     ),   
create table dept(dept_id char(3) primary key,dept_name varchar(7) not null,dept_addr varchar(50) not null);
create table emp(emp_id int primary key,emp_name varchar(7) not null,dept_id char(3),constraint foreign key dept_fk(dept_id) references dept(dept_id));
#    /    
select * from emp cross join dept;
#   
select * from emp inner join dept on emp.dept_id=dept.dept_id;
#    
select * from emp natural join dept;
#    
select * from emp left join dept on emp.dept_id=dept.dept_id;
#    
select * from emp right join dept on emp.dept_id=dept.dept_id;
#   
select * from dept d1,dept d12 where d1.dept_addr=e2.dept_addr and d1.dept_id<>d2.dept_id;

(3)DCL(Data Control Language):データ制御言語で、データベース、テーブル、フィールド、ユーザーへのアクセスおよびセキュリティレベルの操作を定義します.含む:GRANT、REVOKEなど.
(4)Transaction Control:COMMIT、ROLLBACK、SAVEPOINTなどを含むトランザクション制御.
トランザクションの4つの特性:原子性(atomic、トランザクション内のすべての操作が発生するか、発生しないかを確保する)、一貫性(consistency、トランザクションが終了すると、システムのステータスとビジネス・ルールが一致し、データが破壊されないことを確保する)、独立性(isolation、複数のトランザクションが同じデータを操作する場合、各トランザクションにはそれぞれの完全なデータ空間があります)、持続性(durability、トランザクションが完了すると、トランザクションの結果は永続化する必要があります).
データベース管理システムは、再実行ログを使用してトランザクションの原子性、一貫性、持続性を確保し、ロックメカニズムを使用して分離性を実現します.
#mysql        ;  ,             
set autocommit=false;
#     
start transaction;  
begin;
# user        
insert into user(stuno,stuname) values('20170004','(●—●)');
insert into user(stuno,stuname) values('20170005','  ');
#  
rollback;
#          
update user set stuname='   ' where stuno='20170004';
#     
savepoint a1;
update user set stuname='   ' where stuno='20170005';
#      
rollback to a1;
#    
commit;

  4.トリガ、trigger.
#           ,      ,       ;        ,             
create table store(storeid int(5) primary key ,storename varchar(20),storenum int(10));
insert into store(storename,storenum) values('  6' 5000);
insert into store(storename,storenum) values('iphone6' 5000);
create table sale(orderid int(5) primary key auto_increment,ordername varchar(20),ordernum int(10),storeid int(5) references store(storeid));
#     
create trigger tg1 after insert on sale for each row
begin
update store set storenum=storenum-sale.ordernum where storeid=sale.storeid;
end;

5.ストアド・プロシージャ.
#        ,         user       
create procedure go()
begin
select * from user;
end;
#      go(),     select * from user;
call go();
# :    go() ()       ,            
create procedure go2(num int(5))
begin
declare temp integer;
declare total integer;
set temp=1;
set total=1;
while temp<=num do
set total=total+temp;
set temp=temp+1;
end while;
select total;
end;
#      ,     
call go2(100);

6.カスタム関数.
関数とストレージ・プロシージャの重要な違いは、関数に戻り値があることです.
#  go2(),      go3(),         
create function go3(num int(5)) returns int
begin
declare temp integer;
declare total integer;
set temp=1;
set total=1;
while temp<=num do
set total=total+temp;
set temp=temp+1;
end while;
return total;
end;
#        ,      select          
select go3(100);

三、データベース設計
データベース設計の3つのパターンに注意してください.
第1のパターン:テーブルは再分割できません.すなわち、「テーブルにテーブルがない」です.
第2のパターン:プライマリ・キーはすべて依存しなければならず、部分的に依存してはならない.
第3のパターン:プライマリ・キーは依存を伝達できません.
1.良好なデータベース設計は、次の3つの原則に従うべきである.
(1)データの記憶スペースを節約する;
(2)データの完全性を保証できる;
(3)データベース応用システムの開発を容易にする.
2.一般的に、ソフトウェアプロジェクトの開発サイクルには、次のような段階が含まれます.
(1)需要分析段階.お客様のビジネスとデータ処理のニーズを分析します.
(2)概要設計段階.データベースのE-Rモデル図(コンセプトモデル)を設計し、需要情報の正確さと完全性を確認する.
(3)詳細設計段階.E-R図を複数のテーブル(物理モデル)に変換し、論理設計を行い、データベース設計の3つのパターンを適用して監査を行う.
(4)コード作成段階.物理的実装のために特定のデータベースを選択し、コード実装フロントエンドアプリケーションを記述します.
(5)ソフトウェアテストフェーズ.
(6)設置配置.
posted @
2017-12-30 11:55夢の道を走って読む(
...) コメント(
...) コレクションの編集