데이터베이스

[SQL자격증 문제 오답 풀이 1] SQL 자격 검정 실전 문제에서 틀린 문제 개념 복습하기

joheamin 2025. 3. 6. 16:00

SQL 개발자 시험을 준비하며 노랭이라는 SQL 자격검정 실전 문제 라는 책을 2일동안 전부 풀어보았다.

확실히 이론서와 함께 있는 기출들보다 좀 더 복잡하고 어려운 문제들이 많아 도움이 많이 되었던거같다.

 

풀고나서 틀린 답들의 관한 개념들을 다시 정리해서 좀 더 확실하게 짚고 넘어가기 위해 포스트로 작성해 보려고 한다.

 

🔴  데이터 모델링의 특징

3가지로 간단하게 말하자면 추상화 , 명확성 , 단순화 로 볼수 있다

 

추상화 : 현실 세계의 일정한 형식을 맞추어 표현한다.

단순화 : 복잡한 현실세계를 제한된 표기법을 통하여 단순하게 표현한다.

명확성 : 모호하지 않고 누구나 쉽고 정확하게 이해할 수 있도록 한다.

 

이때 주의 할 점은 

데이터 모델링은 오로지 시스템 구현만을 목적으로 하는 것이 아닌 업무 분석업무 현상화를 위한 작업으로도 진행된다.

 

 

🔴 데이터 모델링에 관한 설명

- 업무 정보를 구성하는 정보들을 일정한 표기법으로 표현한다.

- 분석 된 모델을 개발데이터 관리에 이용한다.

- 그 자체로써 업무의 흐름을 설명하고 분석하는 의미가 있다.

 

이때 주의할 점은

데이터베이스는 단순히 구축만을 목적으로 하는것이 아닌 데이터 모델링 그 자체로도 분석하는 등의 여러 목적이 있다.

 

 

🔴  데이터 독립성의 구성요소에 관한 것

데이터 독립성의 구성 요소는

개념스키마 / 내부스키바/ 외부스키마 있다.

 

개념스키마 : 설계자의 관점에 따라 통합된 데이터 베이스 구조를 이룬다.

내부스키마 : 개발자의 관점에 따라 물리적인 저장구조를 의미한다.  INDEX나 TABLE 등을 뜻한다.

외부스키마 : 사용자의 관점에 따라 응용프로그램이 데이터베이스에 접근하며 를 표시하게 된다. 

 

🔴 엔터티나 속성의 명칭 주의할 점

약어는 되도록이면 사용하지 않도록한다. 

 

 

🔴  속성의 특성에 따른 분류

기본속성 : 기존에 존재하는 데이터를 기반으로 도출한 속성

설계속성 : 모델링 단계에선 생성되며 현실 세계에는 존재하지 않는 속성이다.

파생속성 : 다른 속성 값들에 연산에 의해 만들어지는 속성이다. 

 

파생속성은 다른 속성값들을 계산하여 저장해 조회 성능을 더욱 빠르게 높일 수 있게된다.

 

🔴 속성 명칭할 시 주의점

각각의 엔터티에 ID 라는 속성이 동일하게 들어가있다고 하여도 

해당 엔터티의 특성에 따라 엔터티 별로 속성의 이름을 구분해주는 것이 좋다.

 

회원_ID / 관리자_ID 등

 

🔴  데이터 독립성

 

물리독립성 - 물리적 저장구조 (색인구조(INDEX) , 파일구조 등) 가 변화하여도 테이블에 영향이 가지않는다.

논리독립성 - 테이블이 바뀌어도 응용프로그램에 영향이 가지 않는다.

 

 

 

🔴  엔터티 사이에서 관계 도출 시 확인할 점

1. 엔터티 사이에 연관규칙 이 존재하는가

2. 엔터티 사이에 정보의 조합이 발생하는가

3. 업무 기술서 , 장표에 관계연결에 대하 규칙이 서술 되어있는가

4. 업무 기술서, 장표에 관계연결을 가능하게 하는 동사가 있는가?

 

이때 명사는 안된다.

 

 

❗기본키에 속하지 않은 속성 모두가 기본키에 이행적 함수 종속이 아닌 경우 => 제 3정규형

 

🔴 정규화에 관한 설명

제 1 정규화 : 모든 인스턴스가 반드시 속성 당 하나의 값을 가져야한다. ( 반복컬럼 X)

제 2 정규화 : 하나의 엔터티에 두 개의 기본기가 있을 때 실행되며

                      일반 칼럼은 모두 하나의 기본키에 종속되어야 한다.(부분적 함수 종속 제거)

제 3 정규화 : 기본키를 제외한 일반 칼럼들 사이에서 종속이 발생( 이행적 함수 종속)

 

정규화는 개념 데이터의 모델의 일관성을 확보하며 중복을 제거하여 속성들이 가장 신뢰성 있는 데이터 구조를 얻기 위함이다.

 

적절한 엔티티 보다는 !

 

 

🔴  NULL에 대한 설명

모르는값

값의 부재

NULL과의 비교는 알 수 없음이다 (IS NULL은 제외)

 

이때 NULL은 공백 혹은 0을 의미하진 않는다. ❌ 

 

또한 NULL = NULL 또한 비교에 제외 되므로 알수 없음이다 .

 

NULL과 숫자를 연산 할 경우 모두 NULL로 처리 되지만

 

SUM이나 AVG 같은 집계함수에서는 계산에서 제외되고 나머지는 계산되도록 하게한다.(0이 된다는 뜻은 아님)

 

 

🔴 인조 식별자

인조 식별자는 본질 식별자가 복잡한 구성을 가질때 만들어진다.

 

그러나 인조식별자를 사용하면 중복데이터를 막기 어려워지며 

인조 식별자만의 추가적인 인덱스 또한 필요해진다 . (식별자는 기본적으로 index가 자동으로 생성) 

 

이렇게 추가적인 인덱스도 필요하며 의미가 모호해 질수 있다는 점이 있기 때문에 되도록이면 사용하지않는다.