52. 다음은 관계 데이터 모델에서의 주요 제약조건 네 가지를 나타낸다. 릴레이션에 대한 투플 삽입 연산이 발생할 경우 위배될 수 있는 제약조건들을 모두 나열한 것은?
가. 도메인 제약조건(domain constraint) 나. 키 제약조건(key constraint) 다. 엔티티 무결성 제약조건(entity integrity constraint) 라. 참조 무결성 제약조건(referential integrity constraint)
① 가, 나 ② 가, 다, 라 ③ 나, 다, 라 ④ 가, 나, 다, 라
출제의도
관계 데이터 모델에서의 주요 제약조건에 대한 이해도를 확인하고, 투플 삽입 연산이 발생할 경우 어떤 제약조건들이 위배될 수 있는지를 판단하는 능력을 검증하는 것으로 보입니다.
각 항목에 대한 설명
가. 도메인 제약조건(Domain Constraint): 릴레이션 내 튜플들이 도메인에 지정된 형식의 값만을 가져야 한다는 조건입니다. 즉, 한 속성 내에서 데이터 자료형이 일치해야 합니다. 투플 삽입 연산이 발생할 경우, 삽입하려는 데이터가 해당 도메인의 데이터 형식과 일치하지 않으면 도메인 제약조건이 위배됩니다.
나. 키 제약조건(Key Constraint): 기본키에는 중복된 키 애트리뷰트 값이 올 수 없다는 조건입니다. 즉, 특정 애트리뷰트에 중복된 값이 있다면 그 애트리뷰트는 기본키가 아닙니다. 투플 삽입 연산이 발생할 경우, 삽입하려는 키 값이 이미 존재하는 키 값과 중복되면 키 제약조건이 위배됩니다.
다. 엔티티 무결성 제약조건(Entity Integrity Constraint): 릴레이션의 기본키는 NULL값이 아니어야 한다는 조건입니다. 기본키가 NULL값이 아니어야 하는 이유는 튜플을 식별하는 데 이용되기 때문입니다. 투플 삽입 연산이 발생할 경우, 삽입하려는 키 값이 NULL이면 엔티티 무결성 제약조건이 위배됩니다.
라. 참조 무결성 제약조건(Referential Integrity Constraint): 하나의 릴레이션 R에서 다른 릴레이션 S의 기본키를 참조하는 경우, S의 기본키는 NULL이 아니어야 한다는 조건입니다. 이때, R의 외래키는 NULL값이 될 수 있습니다. 투플 삽입 연산이 발생할 경우, 참조하려는 키 값이 존재하지 않으면 참조 무결성 제약조건이 위배됩니다.
따라서, 릴레이션에 대한 투플 삽입 연산이 발생할 경우 위배될 수 있는 제약조건들은 가. 도메인 제약조건, 나. 키 제약조건, 다. 엔티티 무결성 제약조건, 라. 참조 무결성 제약조건입니다.
따라서 정답은 ④ 가, 나, 다, 라입니다.
문제 53
53. 다음 설명 중 개체-관계 모델의 약한 엔티티 타입(weak entity type)에 대한 설명이 옳지 않은 것은?
① 강한 엔티티 타입이 소유 엔티티 타입이 될 수 있다. ② 약한 엔티티 타입은 키를 형성하기에 충분한 애트리뷰트들을 갖지 못한 엔티티 타입이다. ③ 약한 엔티티 타입의 엔티티들을 식별하기 위해 강한 엔티티 타입의 애트리뷰트들 중 임의의 하나와 결합해야 한다. ④ 약한 엔티티 타입이 존재하려면 소유 엔티티 타입이 있어야 한다.
출제의도
의도는 개체-관계 모델에서 약한 엔티티 타입에 대한 이해도를 확인하고, 각 설명이 옳은지 판단하는 능력을 검증하는 것으로 보입니다. 개체-관계 모델에서 약한 엔티티 타입에 대한 설명은 다음과 같습니다:
강한 엔티티 타입: 기본 키를 가진 엔티티를 말합니다.
약한 엔티티 타입: 자체적으로 키를 보유하지 못한 엔티티를 말합니다.
약한 엔티티 타입은 엔티티들을 고유하게 식별하기 위해서 다른 엔티티 타입으로부터 키 애트리뷰트를 가져오는 엔티티 타입입니다.
소유 엔티티 타입: 약한 엔티티 타입에게 키 애트리뷰트를 제공하는 엔티티 타입을 말합니다. 이는 강한 엔티티 타입이 될 수 있습니다
각 항목에 대한 설명
③ 약한 엔티티 타입의 엔티티들을 식별하기 위해 강한 엔티티 타입의 애트리뷰트들 중 임의의 하나와 결합해야 한다: 이 설명은 옳지 않습니다. 약한 엔티티 타입의 엔티티들을 식별하기 위해서는 강한 엔티티 타입의 전체 키와 결합해야 합니다.
따라서 정답은 ③입니다.
문제 54
다음과 같은 이벤트참여 릴레이션이 있다고 하자. 이 릴레이션의 기본 키는 (고객아이디, 이벤트번호)이다. 이벤트참여 릴레이션에 존재하는 함수적 종속 (functional dependency) 관계를 표현한 것 중 옳지 않은 것은?
① 고객아이디 → 고객이름 ② 고객아이디 → 당첨여부 ③ {고객아이디, 이벤트번호} → 고객이름 ④ {고객아이디, 이벤트번호} → 당첨여부
출제의도
출제자의 의도는 이벤트참여 릴레이션에서의 함수적 종속성에 대한 이해도를 확인하고, 각 함수적 종속성이 옳은지 판단하는 능력을 검증하는 것으로 보입니다.
각 항목에 대한 설명
① 고객아이디 → 고객이름: 한 고객아이디는 한 고객이름에만 대응되므로, 이 함수적 종속성은 성립합니다.
② 고객아이디 → 당첨여부: 한 고객아이디는 여러 이벤트에 참여할 수 있으며, 각 이벤트에 대한 당첨여부는 다를 수 있습니다. 따라서, 이 함수적 종속성은 성립하지 않습니다.
③ {고객아이디, 이벤트번호} → 고객이름: 한 고객아이디와 이벤트번호의 조합은 한 고객이름에만 대응되므로, 이 함수적 종속성은 성립합니다.
④ {고객아이디, 이벤트번호} → 당첨여부: 한 고객아이디와 이벤트번호의 조합은 한 당첨여부에만 대응되므로, 이 함수적 종속성은 성립합니다.
따라서 정답은 ②입니다.
문제 55
55. 다음의 릴레이션 address와 이에 대한 함수적 종속들이 다음과 같이 정의되었다. 이것의 정규형과 관련된 설명 중에서 옳지 않은 것은?
address (street, city, state, zipcode) 함수적 종속: street → (city, state) zipcode → city (city, state) → zipcode
① street는 후보키이다. ② 릴레이션 address는 제2 정규형이다. ③ 릴레 이 션 address에 대 한 제3 정 규 형 은 R1=(street, city, state), R2=(city, state, zipcode)이다. ④ 릴레 이 션 address에 대 한 BCNF 정 규 형 은 R1 = (street, city), R2 = (city, state), R3 = (city, state, zipcode) 이다.
출제의도
릴레이션 address와 이에 대한 함수적 종속성에 대한 이해도를 확인하고, 각 정규형에 대한 설명이 옳은지 판단하는 능력을 검증하는 것으로 보입니다.
각 항목에 대한 설명
① street는 후보키이다: 주어진 함수적 종속성에서 street는 (city, state)를 결정하므로 후보키가 될 수 있습니다.
② 릴레이션 address는 제2 정규형이다: 제2 정규형은 모든 비키 애트리뷰트가 기본키에 완전 함수적 종속을 만족해야 합니다. 여기서 비키 애트리뷰트는 city, state, zipcode이며, 이들은 모두 기본키인 street에 완전 함수적 종속입니다.
③ 릴레이션 address에 대한 제3 정규형은 R1=(street, city, state), R2=(city, state, zipcode)이다: 제3 정규형은 이행적 함수적 종속을 제거해야 합니다. 여기서 zipcode → city는 이행적 함수적 종속성을 가지므로 제거해야 합니다. 따라서 올바른 제3 정규형은 R1=(street, city, state), R2=(zipcode, city)입니다.
④ 릴레이션 address에 대한 BCNF 정규형은 R1 = (street, city), R2 = (city, state), R3 = (city, state, zipcode)이다: BCNF 정규형은 모든 결정자가 후보키를 포함해야 합니다. 여기서 city는 후보키가 아니므로, R2와 R3는 BCNF를 만족하지 않습니다. 올바른 BCNF 정규형은 R1=(street, city, state), R2=(zipcode, city)입니다.
따라서 정답은 ④ 입니다.
다음 시간에는 데이터베이스 기출문제 풀이 56-60번까지 풀이를 진행해 보겠습니다. 읽어 주셔서 감사합니다.