Ming's Life

[내일배움캠프] 8일차 본문

내일배움캠프

[내일배움캠프] 8일차

chamiii 2025. 5. 21. 22:35

1. 오늘 학습 키워드

  • SQLD 자격증 공부

 


 

2. 오늘 학습 한 내용을 나만의 언어로 정리하기

모델이 표현하는 트랜잭션의 이해

 

트랜잭션의 이해

- 트랜잭션은 데이터베이스의 논리적 연산단위

 

1. 시작 (Begin):

- 트랜잭션은 어떤 일련의 작업을 나타내기 시작할 때 시작됩니다. 예를 들어, A 계좌에서 B 계좌로 100달러를 이체하려는 트랜잭션이 시작됩니다.

2. 작업 수행:

- 트랜잭션은 하나 이상의 작업으로 이루어집니다. 이 경우에는 A 계좌에서 100달러를 빼고, B 계좌에 100달러를 더하는 두 가지 작업이 있습니다.

3. 확인 (Commit):

- 모든 작업이 성공적으로 수행되었다면, 트랜잭션을 완료하기 위해 확인 단계로 넘어갑니다. 이를 "커밋"이라고 부릅니다. A 계좌에서의 인출과 B 계좌로의 입금이 성공하면 트랜잭션을 커밋하여 최종 결과를 반영합니다.

4. 롤백 (Rollback):

- 하지만 중간에 어떤 문제가 발생한다면, 트랜잭션을 롤백하여 모든 작업을 취소할 수 있습니다. 예를 들어, A 계좌에 잔고 부족 등의 이유로 트랜잭션이 실패한다면, 롤백을 통해 모든 작업을 취소하고 처음 상태로 돌아갈 수 있습니다.

5. 끝 (End):

- 트랜잭션이 커밋되거나 롤백되면 해당 트랜잭션은 종료됩니다. 모든 작업이 반영되었거나, 아니면 아무런 영향도 주지 않은 상태로 끝나게 됩니다.

 

 

트랜잭션의 특징

 

1. 원자성 (Atomicity):

- 트랜잭션은 원자적인 작업의 단위로 간주됩니다. 이는 트랜잭션 내에서 수행되는 모든 작업이 성공하거나 실패할 경우 전체가 실패하는 것을 의미합니다.

   중간에 어떠한 작업이라도 실패하면 이전 상태로 롤백되어야 합니다.

2. 일관성 (Consistency):

- 트랜잭션이 완료된 후에는 데이터베이스가 일관된 상태여야 합니다. 트랜잭션이 시작하기 전과 후에 일관성이 유지되어야 합니다.

   데이터베이스의 제약조건을 준수하고, 비즈니스 규칙을 지켜 일관성을 유지합니다.

3. 고립성 (Isolation):

- 여러 트랜잭션이 동시에 실행될 때 각각의 트랜잭션이 서로 영향을 미치지 않도록 하는 것을 의미합니다.

   다수의 트랜잭션이 동시에 실행될 때, 각각의 트랜잭션이 자신만의 공간에서 작업하고 마치 다른 트랜잭션이 존재하지 않는 것처럼 격리되어야 합니다.

4. 지속성 (Durability):

- 트랜잭션이 성공적으로 완료된 경우, 해당 트랜잭션에서 수행한 변경 사항은 영구적으로 데이터베이스에 반영되어야 합니다.

   시스템 장애 또는 다시 시작되더라도 트랜잭션의 결과가 영구적으로 저장되어야 합니다.

 

 

Null 속성의 이해

 

Null의 개념

- Null은 데이터베이스에서 특정 필드 또는 칼럼에 값이 없음을 나타내는 특별한(중요한) 값

- Null 값은 ‘공백이나 숫자 0’과는 전혀 다른 의미

 

Null의 특징

1. 미정 상태:

- Null은 해당 필드의 값이 미정이거나 알 수 없는 경우를 나타냅니다. 어떤 이유로든 데이터가 존재하지 않거나 입력되지 않은 상태입니다.

2. 데이터 부재:

- Null은 필드에 대한 값이 없음을 나타냅니다. 다시 말해, 해당 필드에는 어떠한 데이터도 저장되어 있지 않은 상태입니다.

3. 값의 비교 불가능:

- Null 값은 다른 값과 비교할 때 특별한 주의가 필요합니다. Null은 다른 값과는 동등이나 불동등을 비교할 수 없습니다.

   Null과의 비교는 항상 불확실한 결과를 가져올 수 있습니다.

 

집계 함수와 Null

- 집계 함수는 대부분 Null 값을 제외하고 처리되기도 합니다.

- 이는 데이터베이스에서 Null 값이 특별한 상황을 나타내거나 연산에서 불확실한 결과를 가져오기 때문입니다.

 

* 사칙 연산과 Null

Null + 2 or 2 + Null -> Null

Null - 2 or 2 - Null -> Null

Null * 2 or 2 * Null -> Null

Null / 2 or 2 / Null -> Null

 

집계 함수와 Null 처리

SUM 함수:

- SUM 함수는 합계를 계산하는 함수입니다. 일반적으로 Null 값을 0으로 처리합니다.

  따라서 Null 값을 제외하고 나머지 값들의 합을 계산

SELECT SUM(column_name) FROM table_name;

 

AVG 함수:

- AVG 함수는 평균을 계산하는 함수입니다. Null 값을 제외하고 나머지 값들의 평균을 계산합니다.

SELECT AVG(column_name) FROM table_name;

 

COUNT 함수:

- COUNT 함수는 행의 개수를 세는 함수입니다. 일반적으로 Null 값을 제외하고 유효한 값들의 개수를 세어줍니다.

   단, COUNT(*) 의 경우 NULL을 포함해서 모든 행의 수를 리턴합니다.

SELECT COUNT(column_name) FROM table_name;

 

MIN/MAX 함수:

- MINMAX 함수는 최소값과 최대값을 찾는 함수입니다.

   ull 값을 무시하고 나머지 값 중에서 최소값과 최대값을 찾습니다

SELECT MIN(column_name), MAX(column_name) FROM table_name;

 

 

본질식별자 vs 인조식별자

 

본질식별자 vs 인조식별자 개념

- 본질식별자(Natural Key)와 인조식별자(Surrogate Key)는 데이터베이스 설계에서 사용되는 중요한 개념입니다

 

본질식별자 (Natural Key):

- 업무에 의해 만들어진 식별자

 

정의:

- 본질식별자는 데이터 엔터티를 식별하는 데에 자연스럽게 존재하는 속성이나 조합입니다.

   이는 실제로 데이터와 밀접한 관련이 있는 속성으로, 엔터티가 갖고 있는 자연스러운 속성을 활용하여 식별자로 사용됩니다.

장점:

- 데이터베이스에 의미 있는 정보를 포함하므로 인간이 읽고 이해하기 쉽습니다.

- 자연스럽게 발생하는 속성을 사용하므로 데이터 일치성이 높을 수 있습니다.

단점:

- 데이터 속성의 변화나 형식 변경이 발생하면 식별자에도 영향을 미칠 수 있습니다.

- 복합 본질식별자의 경우 복잡성이 증가할 수 있습니다.

 

 

인조식별자 (Surrogate Key):

- 업무적으로 만들어지지는 않지만 본질식별자가 복잡한 구성을 갖고 있으므로 인위적으로 만든 식별자

 

정의:

- 인조식별자는 의도적으로 만들어진, 데이터와 무관한 특별한 식별자입니다. 주로 시스템이나 데이터베이스 설계 목적으로 생성되며, 엔터티를 고유하게 식별하기 위한 보조적인 역할을 합니다.

장점:

- 데이터 일관성이 유지되며, 데이터 변화에 대한 영향이 적습니다.

- 복합 본질식별자의 복잡성을 피할 수 있습니다.

단점:

- 식별자 자체가 데이터베이스와 관련이 없어, 사용자가 직접 읽고 이해하기 어려울 수 있습니다.

- 중복되지 않도록 일련번호 등을 생성하기 위해 추가적인 관리가 필요할 수 있습니다.

 

3. 학습하며 겪었던 문제점 & 에러 

 

-

 

4. 내일 학습 할 것은 무엇인지 

 

SQL 코드카타 , SQLD강의 듣기

 

'내일배움캠프' 카테고리의 다른 글

[내일배움캠프] 10일차  (0) 2025.05.23
[내일배움캠프] 9일차  (0) 2025.05.23
[내일배움캠프] 7일차  (0) 2025.05.20
[내일배움캠프] 6일차  (0) 2025.05.19
[내일배움캠프] 5일차  (0) 2025.05.16