코드스테이츠 32일차

안형준·2022년 6월 10일
0

코드스테이츠

목록 보기
32/32
post-thumbnail
👻데이터베이스 설계👻

👻관계형 데이터베이스의 키워드
* 데이터(data): 각 항목에 저장되는 값
* 테이블(table; 또는 relation) : 열의 데이터 타입처럼 작성된 데이터가 행으로 축적된다.
* 칼럼(column; 또는 field) : 테이블의 한 열
* 레코드(record; 또는 tuple) : 테이블의 한 행에 저장된 데이터
* 키(key) : 테이블의 각 레코드를 구분할 수 있는 값, 각 레코드마다 고유한 값을 가진다. 기본키(primary key)와 외래키(foreign key) 등이 있다.

기본키 (Primary Key) : 테이블에서 유일하게 식별하기 위해 사용하는 키
외래키 (Foreign Key) : 외래키란 테이블 내의 열 중 다른 테이블의 기본키를 참조하는 열을 외래키라 한다.

👻관계 종류
* 1:1 관계
* 1:N 관계
* N:N 관계
* self referencing 관계

1:1 관계
하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우이다.

1:N 관계
하나의 레코드가 서로 다른 여러 개의 레코드와 연결된 경우

N:N 관계
여러 개의 레코드가 다른 테이블의 여러 개의 레코드와 관계가 있는 경우
N:N(다대다) 관계를 위해 스키마를 디자인할 때에는, Join 테이블을 만들어 관리한다.

자기참조 관계(Self Referencing Relationship)
때로는 테이블 내에서도 관계가 필요하다.
예를 들어 추천인이 누구인지 파악하기 위해 사용할 수 있다.

👻SELECT 실행 순서
데이터를 조회하는 SELECT 문은 정해진 순서대로 동작한다. 순서는 다음과 같다.
* FROM
* WHERE
* GROUP BY
* HAVING
* SELECT
* ORDER BY

👻데이터베이스 정규화 (Database Normalization)
* Data redundancy
* Data integrity
* Anomaly

Data Redundancy
데이터 중복 (data redundancy) 는 실제 데이터의 동일한 복사본이나 부분적인 복사본을 뜻한다.
* 일관된 자료 처리의 어려움
* 저장 공간 낭비
* 데이터 효율성 감소

Data Integrity
데이터 무결성 (data integrity) 는 데이터의 수명 주기 동안 정확성과 일관성을 유지하는 것을 뜻한다.

Anomaly
데이터 이상 현상 (anomaly) 와 같은 경우에는 데이터에서 기대한 것과 다른 이상 현상을 가리킨다.
* 갱신 이상 (update anomaly)
* 삽입 이상 (insertion anomaly)
* 삭제 이상 (deletion anomaly)
- Update Anomaly
갱신 이상 (update anomaly) 는 동일한 데이터가 여러 행 (레코드) 에 걸쳐 있을 때에 어느 데이터를 갱신해야 하는지에 대한 논리적 일관성이 없어 발생하게 된다.

- Insertion Anomaly
삽입 이상 (insertion anomaly) 는 데이터 삽입을 못하는 경우를 가리킨다.

- Deletion Anomaly
삭제 이상 (deletion anomaly) 와 같은 경우에는 데이터의 특정 부분을 지울 때에 의도치 않게 다른 부분들도 함께 지워지는 이상 현상이다.

👻SQL 종류
* Data Definition Language
* Data Manipulation Language
* Data Control Language
* Data Query Language
* Transaction Control Language

Data Definition Language(DDL)
DDL(Data Definition Language)은 데이터를 정의할 때 사용하는 언어이다. 테이블을 만들 때 사용하는 CREATE 이나 테이블을 제거할 때 사용되는 DROP 등이 DDL에 해당한다. 데이터베이스의 테이블과 같은 오브젝트를 정의할 때 사용한다.

Data Manipulation Language(DML)
DML(Data Manipulation Language)은 데이터베이스에 데이터를 저장할 때 사용하는 언어이다. INSERT 처럼 새로운 레코드를 추가할 때 사용되는 문법을 포함해 데이터를 삭제하는 DELETE 나, 변경하는 UPDATE 가 DML에 포함된다.

Data Control Language(DCL)
DCL(Data Control Language)은 데이터베이스에 대한 접근 권한과 관련된 문법입니다. 어느 유저가 데이터베이스에 접근할 수 있는지 권한을 설정한다. 권한을 주는 GRANT 나, 권한을 가져가는 REVOKE 등이 DCL에 포함된다.

Data Query Language(DQL)
DQL(Data Query Language)은 정해진 스키마 내에서 쿼리할 수 있는 언어이다. SELECT 가 DQL에 해당한다. 이렇게 언어를 분류했지만, DQL을 DML의 일부분으로 취급하기도 한다.

Transaction Control Language(TCL)
TCL(Transaction Control Language)은 DML을 거친 데이터의 변경사항을 수정할 수 있다. COMMIT 처럼 DML이 작업한 내용을 데이터베이스에 커밋하거나, ROLLBACK 처럼 커밋했던 내용을 다시 롤백하는 문법이 있다.

👻SQL 추가적인 문법

CASE 사용하기
CASE는 if문과 같은 기능을 한다.

SUBQUERY
쿼리문을 작성할 때, 다른 쿼리문을 포함할 수 있다.
이 때 포함되는 다른 쿼리문을 SUBQUERY(서브쿼리)이라고 한다.
서브쿼리는 소괄호로 감싸야하며, 서브쿼리의 결과는 개별 값이나 레코드 리스트이다.

IN, NOT IN
IN은 특정한 값이 서브쿼리에 있는지 확인할 수 있다.

EXISTS
EXISTS 또는 NOT EXISTS는 돌려받은 서브쿼리에 존재하는 레코드를 확인한다.
만약 조회하려는 레코드가 존재한다면 참(TRUE)을, 그렇지 않은 경우에는 거짓(FALSE)을 리턴한다.

FROM
FROM에도 서브쿼리를 사용할 수 있다.

오늘은 SQL의 다양한 문법들을 학습했고, 직접 간단하게 구현도 해보았다.

이렇게 간단하게 구조를 짜보았고, 이에 맞춰 작업을 하니 아무런 구조 없이 할 때와 달리 훨씬 수월하게 작업할 수 있었다.
아직까지는 데이터베이스와 친해지지 않았다고 해야할까..
기초적인 부분은 분명히 이해가 되는데 좀 더 자세한 부분을 찾아보려 하면 전혀 이해하지 못하는 단어들이나 개념들이 등장해 겁에 질리게 된다.
물론 앞으로 스프링을 학습하면서 모르는 부분은 계속 찾아보면서 공부하다 보면 익숙해지는 날이 올 것이라 믿는다.
오늘도 고생했어 !

profile
개발 공부

0개의 댓글