LabHub

데이터베이스 개념 · 관계형 모델 · 퀴즈

퀴즈: 관계형 모델

LabHub 에서 이어서 보기

문항 6개. 정답과 해설은 풀어 본 뒤에 보여 드립니다.

  1. WHERE email = NULL 이 아무 행도 반환하지 않는 이유는?

    1. email 컬럼에 NULL 인 행이 하나도 없기 때문
    2. = NULL 은 문법 오류라 조건이 통째로 무시되기 때문
    3. NULL 과의 비교 결과는 참도 거짓도 아닌 미지이므로 WHERE 를 통과하지 못하기 때문
    4. NULL 은 빈 문자열로 자동 변환되기 때문
  2. count(*) 와 count(email) 의 차이는?

    1. 어떤 데이터에서도 둘은 항상 같은 값을 반환한다
    2. count(*) 는 행 수를, count(email) 은 email 이 NULL 이 아닌 행 수를 센다
    3. count(email) 은 인덱스만 읽으므로 언제나 더 빠르다
    4. count(*) 는 중복을 제거한 고유 행 수를 센다
  3. 대리 키(surrogate key)를 쓰기로 했을 때도 자연 키를 유일 제약으로 남겨야 하는 이유는?

    1. 대리 키가 있어도 도메인 규칙상 중복되면 안 되는 값은 여전히 중복되면 안 되기 때문
    2. 성능이 빨라지기 때문
    3. 외래 키를 걸 수 없기 때문
    4. 대리 키만으로는 행을 식별할 수 없기 때문
  4. 금액 컬럼에 double precision 을 쓰면 생기는 문제는?

    1. 저장 공간이 numeric 보다 크다
    2. 인덱스를 만들 수 없다
    3. 정렬이 되지 않는다
    4. 부동소수점은 근사값이라 합계나 반올림 결과가 회계와 어긋날 수 있다
  5. 도메인 규칙을 애플리케이션이 아니라 데이터베이스 제약으로 옮기는 가장 큰 이유는?

    1. 코드가 짧아지기 때문
    2. 제약이 인덱스를 자동으로 만들어 주기 때문
    3. 운영 중 수동 SQL, 배치 스크립트, 나중에 붙는 다른 서비스까지 모두 막아 주기 때문
    4. 제약은 성능에 영향을 주지 않기 때문
  6. PostgreSQL 에서 timestamp 와 timestamptz 를 고를 때의 기준으로 옳은 것은?

    1. timestamptz 는 저장 공간이 더 크므로 꼭 필요할 때만 쓴다
    2. 어떤 순간을 가리키는 값에는 timestamptz 를 쓰고, 시간대와 무관한 벽시계 값에만 timestamp 를 쓴다
    3. 둘은 동일하므로 아무거나 써도 된다
    4. timestamp 가 표준이므로 항상 그것을 쓴다