日付24-[データベース]リレーショナル・データベース
6811 ワード
<リレーショナル・データベース>
なぜ1データベースが必要ですか?
▼▼データの保存方法
JavaScriptに格納できるデータは、サーバプログラムの実行時に変数に値を割り当てて格納します.プログラムの実行時にのみ存在するデータであり、データのライフサイクルがプログラムのライフサイクルに依存するため、データの保護が困難であるという欠点がある.
スプレッドシート、CSV(Comma Separated Variables)などのファイルにデータを格納し、ファイルI/Oでデータを受信する方式です.欠点は、データが必要になるたびにファイル全体を読み込むため、ファイルが大きいほど効率が低下することです.
▪️ 3-Tier Architecture
上の図は、3階層アーキテクチャの流れを示しています.三層アーキテクチャの主な利点は機能の論理的および物理的分離である.三層アーキテクチャの利点は大体4つある.
2朕関係データベースVS NoSQL
データベースには主にリレーショナル・データベースと非リレーショナル・データベースがあります.リレーショナル・データベースは、テーブルの構造やデータ型などをあらかじめ定義し、テーブルに定義された形式のデータのみを挿入します.リレーショナル・データベースでは、入力データがスキーマ(schema)に一致する必要がありますが、リレーショナル・データベースではなく、データを読み出すときにスキーマに従って読み出すことを「schema on read」とも言います.
SQLとは?
SQL(Structured Query Language)は構造化されたクエリー言語であり、データベースのプログラミング言語である.ここで,クエリはデータをフィルタリングするためのクエリ文であると考えられる.クエリーをデータベースに送信して、必要なデータをインポートまたは挿入できます.SQLを使用するには、データ構造が固定されている必要があります.そのため、MySQL、Oracle、SQLite、PostgresSQL、MariaDBなどのリレーショナル・データベースで使用します.
NoSQLとは?
SQLを使用できるデータベースとは異なり、データ構造が固定されていないデータベースです.リレーショナル・データベースとは異なり、データはテーブルとは異なる形式で格納されます.MongoDBのようなドキュメント向けのデータベースはこうです.非リレーショナル・データベースは、通常、次のクラスに分類されます.
e.g.) Redis, Dynamo
e.g.) MongoDB
e.g.) Cassandra, HBase
e.g.) Neo4J, InfiniteGraph
▼SQLベースのデータベースとNoSQLデータベースの違い
リレーショナル・データベースのNoSQLデータを使用して、SQLのデータ・テーブル・キー値、ドキュメント、ワイド・カラム、Graphなどの固定形式でアーキテクチャを動的に管理し、構造化クエリ言語(Query Language)UnQL(拡張性)垂直拡張(コストが高い)水平拡張(比較的低コスト)
▼SQLベースのリレーショナル・データベースを使用したケース
データベースのACID属性を遵守する必要があります
SQLは、データベースとのインタラクションを正確に規定できるため、データベースの整合性を保護できます.すべての金融サービス(電子商取引を含む)のソフトウェアを開発する際には、ACIDの性質を守らなければならないため、通常はリレーショナル・データベース(SQL)が使用されます.
ACIDとは?
ACIDとは、データベース内でトランザクションが発生した場合にその安定性が保証される性質をいう.
ソフトウェアで使用されるデータは構造化され、一貫性があります.
大規模なサーバを必要としないプロジェクトで一貫したデータを使用する場合は、主にリレーショナル・データベースが使用されます.
▼NoSQLデータベースの使用例
格納されているデータ量は大きく、ほとんどまたはまったくデータ構造がありません.
ほとんどのNoSQLデータベースでは、データ型に制限はありません.ソフトウェア開発に多くの未定型データが必要な場合は、NoSQLを使用することが望ましい.
クラウドコンピューティングとストレージスペースの活用
クラウドベースのデータベース・リポジトリを構築することで、低コストのソリューションを提供できます.データベースの拡張性がソフトウェアにとって重要である場合は、NoSQLデータベースを使用することをお勧めします.
サービスの迅速な導入中に、データ構造が頻繁に更新されます.
NoSQLデータベースでは、アーキテクチャを事前に準備する必要がないため、迅速な開発プロセスに適しています.
< SQL >
1▼▼▼主な文法
▼データベースコマンド
CREATE DATABASE 데이터베이스_이름;
USE 데이터베이스_이름;
DROP DATABASE 데이터베이스_이름;
CREATE TABLE 테이블_이름
(
PersonID int PRIMARY KEY AUTO_INCREMENT, // 자동 증가
LastName varchar(255), // 최대 255글자
FirstName varchar(255),
);
削除DROP TABLE 테이블_이름;
TRUNCATE TABLE 테이블_이름;
修正ALTER TABLE 테이블_이름
ADD Birthday DATE; // DATE 형식의 Birthday 열 추가
ALTER TABLE 테이블_이름
DROP COLUMN Birthday; // Birthday 라는 이름의 열 삭제
▼SQLコマンド
SELECT 특성
SELECT 특성1, 특성2
FROM 테이블_이름
SELECT 특성1, 특성2
FROM 테이블_이름
WHERE 특성_1 = "특정 값" // 특정 값과 동일한 데이터 찾기
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 <> "특정 값" // 특정 값을 제외한 값을 찾기
SELECT 특성_1, 특성_2
FROM 테이블_이름
WHERE 특성_2 LIKE "%특정 문자열%" // 특정 값과 비슷한 값들을 필터
// "a%": a로 시작하는 값
// "%a": a로 끝나는 값
// "%a%": a를 포함한 값
// "_a%": 두 번째 문자가 a인 값
SELECT * // 모든 특성(*)
FROM 테이블_이름
WHERE 특성_1 IS NOT NULL // 값이 없는 경우를 제외
SELECT *
FROM 테이블_이름
ORDER BY 특성_1 DESC // 내림차순으로 정렬
SELECT *
FROM 테이블_이름
LIMIT 200 // 데이터 결과를 200개만 출력
SELECT DISTINCT 특성_1
FROM 테이블_이름
SELECT *
FROM 테이블_1
JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
// 테이블_1과 테이블_2를 특성_A와 특성_B가 같은 부분을 기준으로 연결
SELECT *
FROM 테이블_1
LEFT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
// 왼쪽 테이블(테이블_1) 기준으로 JOIN
SELECT *
FROM 테이블_1
RIGHT OUTER JOIN 테이블_2 ON 테이블_1.특성_A = 테이블_2.특성_B
// 오른쪽 테이블(테이블_2) 기준으로 JOIN
▼SQL文法練習サイト
https://www.w3schools.com/sql/sql_exercises.asp
2アーキテクチャ設計
インスピレーションとは?
データベース内のデータの組織方法および異なるエンティティ間の関係の説明を示します.つまり、「データベースの青写真」のようなものです.
▼リレーショナルデータベース設計
上記の画像では、
id
は、各テーブルのレコードを指し、自動的に1つの値を増加させる数字である.これをPrimary Key(Primary Key)と呼び、別のテーブルでキーを参照する場合、この値をForeign Key(Foreign Key)と呼びます.▼関係の種類
あるレコードが別のテーブルのレコードに関連付けられている場合、
1つのレコードが複数の異なるレコードに関連付けられている場合、
複数のレコードは、別のテーブルの複数のレコードに関連付けられます.
->Joinテーブルを作成して管理し、互いに1:N、N:1にする必要があります.
▼▼Schemaデザインツール
https://dbdiagram.io
Reference
この問題について(日付24-[データベース]リレーショナル・データベース), 我々は、より多くの情報をここで見つけました https://velog.io/@tamagoyakii/TIL-24일차-데이터베이스-관계형-데이터베이스テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol