티스토리 뷰

※ 기출문제지는 2019년 3월 3일 기출문제 해설 #001~#004에 가면 다운로드 받을 수 있습니다.

2019/06/20 - [IT관련/정보처리기사] - [정보처리기사] 2019년 3월 3일 기출문제 해설 #001 ~ #004

 

5. 한 릴레이션의 기본 키를 구성하는 어떠한 속성 값도 널(Null)값이나 중복 값을 가질 수 없음을 의미하는 것은?

사실 이 문제는 "기본 키"라는 단어가 나온 것을 봤을 때 이미 "개체 무결성"이 떠올라야한다. 아참, 릴레이션은 테이블과 같은 의미다.(Relation = Table) 그러니까 테이블의 기본 키가 뭐겠어. PK(Prime Key)겠지. PK가 Null을 가지면 안되는 거니까 개체 무결성이 떠올라야한다. 

 

이 문제는 "무결성 제약조건(Integrty Constraints)"에 대한 이야기를 얼마나 잘 알고 있는지 물어보는 문제다. 이 무결성 제약조건에 어떤게 있는지 확인해보자.

 

  1. 개체 무결성
    - 기본키 속성은 Null, 중복값 불가
  2. 참조 무결성
    - 외래키(FK)는 Null 또는 참조 릴레이션(테이블)의 기본키(PK) 값과 동일
  3. 도메인 무결성
    - 특정 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야 한다....
      도메인이란 속성값이 가질 수 있는 원자값의 집합인데 예를 들어 속성이 "성별"이라면 가질 수 있는 속성 값은 "남"과 "여"라는 두가지만 가질 수 있다. 이 이외의 값을 갖는다면 도메인 무결성이 깨진 것이라고 할 수 있다.
  4. 고유 무결성
    - 속성값에 고유한 값을 가져야만 할 때 모두 다른 값을 갖는 것을 고유 무결성이라고 한다. 예를 들어 로그인 "아이디"와 같은 값이다.
  5. Null 무결성
    - 특정 속성 값이 Not Null인 경우 속성의 값에 Null을 부여할 수 없다는 제약조건
  6. 키 무결성
    - 한 릴레이션(테이블)에는 최소한 하나의 키(PK)가 존재해야만 한다는 제약조건

6. 학적 테이블에서 전화번호가 Null값이 아닌 학생명을 모두 검색할 때, SQL 구분으로 옳은 것은?

이 문제는 그냥 뒤에 전화번호 속성이 NOT NULL 인 SQL을 작성한 것을 찾는 거라고 생각하면 된다. "Don't Null"은 뭔소린가 싶었고 "!= NULL" 은 햇깔릴 수 있는데 NULL은 보통 SQL에서 등식으로 표현하지 않는 다는걸 안다면 매우 쉬운 문제다.

 

7. 제 2정규형에서 제 3정규형이 되기위한 조건은?

일단 이 문제는 정규화를 하기 위한 조건들을 알아야한다는 건데 이게 내용이 많고 그냥 맨땅에 외우기만 해야하는 내용이라 햇깔리기 딱 좋다. 그러니 최대한 햇깔리지 않도록 요약해서 달달 외우도록 하자.

 

  • 제 1 정규형(1NF = 1 Normal Form)
    - 중복되는 항목이 없어야 함(각 값이 원자값(중복이 없는 상태)으로만 되어 있어야함)
  • 제 2 정규형(2NF)
    - 부분 함수적 종속 관계를 제거
  • 제 3 정규형(3NF)
    - 이행 함수적 종속 제거(속성이 a > b > c와 같은 종속관계에 있는 것을 제거)
  • BC(Boyce-codd)정규형(BCNF)
    - 결정자이면서 후보키가 아닌 것 제거
  • 제 4 정규형
    - 다치 종속 제거
  • 제 5 정규형
    - JOIN 종속성 이용

정규형에 대한 이야기는 다른 포스팅을 통해 깊게 이야기 해보도록하자.

이 정규형이란 것은 DB 테이블 설계시 굉장히 중요한 부분으로 데이터를 어떻게 분류하고 관계를 어떻게 만들어야 적절한지 정보처리기사가 아니더라도 알아야할 기본 소양이다.

 

암튼 위의 정규형 조건을 봤을 때 정답은 1번이 되겠다.

사실 나도 다 아는 내용이지만 막상 물어보면 이게 1정규형인지 2정규형인지 햇깔린다. 그래서 나는 1 정규형은 1이라서 중복이 없고 2정규형은 두가지가 겹친 "함수 종속"(함수 종속관계가 두개의 필드가 겹쳐서 이상관계가 되어버린 종속관계를 이야기한다.)관계를 제거해야하고 3정규형은 a > b > c 3개의 이행 함수 종속을 제거해야하는 걸로 외웠다. 한마디로 그냥 외운건데 각자 자신에게 맞는 방법으로 외우는게 좋겠다.

 

8. 뷰에 대한 설명으로 옳지 않은 것은?

일단 뷰(View)에 대한 이야기는 1번 문제를 풀었을때 잠깐 이야기를 해줬는데 다시한번 뷰에 대해 이야기하면 일단 물리적인 두개의 테이블에서 내가 원하는 정보만 담고 있는 테이블로 만들어내는 논리적 테이블이라고 이해하면 된다. 논리적이라는 말은 메모리상에만 존재하고 있어서 DB가 종료되면 이 뷰의 데이터도 날아간다.

그리고 물리 테이블로 부터 데이터를 가지고 오는 것이라 당연히 데이터의 수정도 안된다. 그 외에 기본적으로 테이블이 갖는 특징들은 모두 갖을 수 있다고 보면 되겠다.

논리적 테이블, 수정, 삽입, 삭제 안되는것만 제외하면 일반 테이블이랑 다를게 없다. 하지만 실무에서 업무에 따라 다르겠지만 뷰를 사용하는 경우보다 사용하지 않는 경우가 많은데 전에 이야기 했다시피 잘못 사용해서 리소스를 낭비하는 경우가 있으니 사용에 주의가 필요하다.

 

보다 자세한 설명은 따로 포스팅하도록 하겠다. 그 전까지는 https://121202.tistory.com/18에 가서 읽어보도록.

 

9. 시스템 카탈로그에 대한 설명으로 틀린 것은?

시스템 카탈로그는 나도 잘 모르겠다. 검색해서 공부해야겠다.

 

시스템 카탈로그란?

  • 시스템 카탈로그는 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
  • 시스템 카탈로그 내의 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블
  • 데이터 정의어의결과로 구성되는 기본 테이블, 뷰, 인덱스, 패키지, 접근 권한 등의 데이터베이스 구조 및 통계 정보를 저장
  • 카탈로그들이 생성되면 자료사전에 저장. 그래서 좁은 의미로 카탈로그 = 자료 사전 이라고도 함
  • 카탈로그에 저장된 정보를 "메타 데이터"라고 함

<카탈로그 특징>

  • 카탈로그 자체도 시스템 테이블로 구성 -> 일반 SQL을 이용해 내용을 검색할 수 있다.
  • INSERT, DELETE, UPDATE문으로 카탈로그 갱신은 허용안됨
  • 데이터베이스 시스템에 따라 상이한 구조를 갖는다.(DB마다 구조가 다름)
  • 카탈로그의 갱신 : 사용자가 SQL문을 실행시켜 기본 테이블, 뷰, 인덱스 등에 변화를 주면 시스템이 자동 갱신
  • 분산 시스템에서의 카탈로그 : 보통의 릴레이션, 인덱스, 사용자 등에 정보를 포함할 뿐 아니라 위치 투명성 및 중복 투명성을 제공하기 위해 필요한 모든 제어 정보를 가져야함

<시스템 카탈로그의 종류>

  • SYSTABLES : 기본 테이블 및 뷰 테이블의 정보를 저장하는 테이블
  • SYSCOLUMNS : 모든 테이블에 대한 정보를 열(속성) 중심으로 저장하는 테이블
  • SYSVIEW : 뷰에 대한 정보를 저장하는 테이블
  • SYSTABAUTH : 테이블에 설정된 권한 사항들을 저장하는 테이블
  • SYSCOLAUTH : 각 속성에 설정된 권한 사항들을 저장하는 테이블

한마디로 시스템 카탈로그는 DB의 설정정보를 담는 데이터베이스라면 이해가 빠르겠다.

그러므로 사용자 업데이트가 가능하다고 말하는 4번이 잘못되었다. 사용자가 데이터를 수정할 수 있다니. 안될 말이다.

 

이제 다음 정보처리기사 문제 해설은 10번부터 20번까지 데이터베이스 영역을 끝내도록 하겠다. 오늘은 이만!

안녕!

댓글
댓글쓰기 폼