용's

[Chap 2-1] 개체-관계 모델(Entity-Relationship model) 본문

Computer Science/Database

[Chap 2-1] 개체-관계 모델(Entity-Relationship model)

TaeYOng's 2014. 10. 12. 19:18

2.1 개체 모음(Entity Set)

1) 개체: 실제 세상에 있는 객체(object), 사실상 객체

- 개체~관계 모델에서 실제로 만질 수 있든 없든 구별하지 않고 모두 객체로 본다.

예) 책상, 교실, 컴퓨터 : 만질 수 있는 것들

     요일, 학과 이름, 학번 : 만질 수 없음


2) 개체 집합(Entity Set)

- 학생 개체 집합, 은행 고객 개체 집합 등등, 같은 형의 개체의 집합



2.2 속성(Attribute 또는 Property)

- 개체는 속성의 집합으로 나타냄

예) 학생 개체는 학번, 주민 등록번호, 전화번호, 소속 학과 등의 속성

     은행 계좌는 계좌 종류, 개설 지점, 계좌 번호, 소유자 등의 속성


1) 도메인(Domain, 범위)

- 어떤 속성의 값이 될 수 있는 모든 값의 집합.

- 도메인(=범위)을 나타내는 방법에 따라 도메인이 다를 수 있음. 

예) 학번의 경우, 9자리 숫자로 된 문자열(char, str) 또는 유효한 학번의 집합

학번이 00000000 이라 하면 문자열로 되지만, 유효한 학번의 집합에 속하진 않을 수!


2) 속성의 형(type)

- 속성의 형은 두 가지 다른 기준으로 독립적으로 분류. 

- 단순(Simple)/복합(Composite) 속성과 값이 하나(single-valued)/ 값이 여럿(multi-valued)인 속성

- 이 데이터 모형에 따라 네 가지 경우가 있을 수 있고 네가지 가운데 어느어느 것을 허용하는지가 다름

  => 단순하면서 값이 하나인 속성

  => 단순하면서 값이 여럿인 속성

  => 복합하면서 값이 하나인 속성

  => 복합하면서 값이 여럿인 속성


2-1) 단순 속성(Simple attribute)

- 속성의 값을 더 이상 나눌 수 없음(indivisible)

예) create table 학생 (학번 char(7), 이름 char(20), 집전화 char(15));

이 SQL 명령에서 학번 이름 집전화 모두 단순 속성


2-2) 복합 속성(Composite attribute)

- 값이 단순하지 않은 속성 

- 복합 속성은 값을 여러 개로 나눌 수 있음

예) create table test(날짜 char(8), ...); 또는 create table test(연 char(4), 월 char(2), 일 char(2));

위와 같을 때는 모두 날짜 또는 연 월 일 다 simple attribute 이다

하지만 다음과 같이

create table test(날짜2 (연 char(4), 월 char(2), 일 char(2))); 와 같다면

연, 월, 일을 각각 불러 쓸 수도 있지만, 날짜2로 값을 부를 수도 있다. char(8)

예를 들면 만일 어떤 날짜2의 값이 2010년 09월 13일이라고 하면 연=2010, 월=09, 일13, 날짜2=20100913

이때 날짜2를 복합 속성이라고 함


2-3) 값이 하나인 (single-valued) 속성과 값이 여럿인(multi-valued) 속성

예) 학생이 세 과목을 수강하는 사실을 아래 수강1 표에서 나타내려면...

create table 수강1(학번 char(7), 과목번호 char(5));

--> 수강1        학번    과목번호

9902101   CS333

9902101   CS444

9902101   CS555

위의 경우 세 줄(tuple, row)로 나타낸다. 꼭 같은 학번이 세 번 나오게 되며 과목 번호는 다른 것이 세개가 나온다. 이는 표준 SQL이 지원하는 방식이다.


예) 학생이 세과목을 수강한다는 사실을 '가상적으로' 다음과 같이 'set of'를 써서 세 과목의 번호의 집합으로 나타낸다고 할 때(이는 표준 SQL에서는 허용되지 않고, 확장된 SQl에서는 이와 비슷한 기능이 있음)

create table 수강1_1(학번 char(7), 과목_번호_목록 set of char(5));
--> 학번=9912345, 과목 번호 목록={CS333, CS444, CS555}


앞서 설명한 예를 토대로 정리하면 

 

 Single-Valued

Multi-Valued 

단순 

예: 학번, 전화번호, 날짜 

예: 과목_번호_목록 

복합

예: 날짜2 

예: {(2002,08,31), (2003,03,31)} 


3) 널(Null) 값

- 원래는 값이 없다, 비었다, 0이다 라는 뜻

- DB에서는 해당되지 않음, 빠진 값, 잘 모름 등으로 사용. (되도록 Null을 쓰지 않도록 해야함)


4) 관계 집합(Relation set)

- 관계: 개체 두 개 또는 여러 개 사이의 연관

- 관계 집합: 같은 형의 관계를 모은 것(집합)

예) 학생 객체와 과목 객체가 있을 때,

수강 관계: 어느 학생이 어느 과목을 듣는지의 관계(연관)

학생 객체와 과목 객체에도 속성이 있듯이, 관계에도 속성이 있을 수 있음: 수강 객체에 성적 등급 성적



2.4 사상(Mapping) 제약 조건(Mapping Constraints)

1) 사상(Mapping) 크기(Mapping cardinality)

- 두 객체 사이에 binary 관계가 있을 때, 저 쪽 객체로 연관될 수있는 이 쪽 객체의 수

- 관계는 1:1, 1:n, m:1, m:n 네가지


예) 전화번호와 그 전화번호 소유자 사이의 관계

전화번호 : 소유자 주민등록번호 = 1 : 1 (한 사람은 전화번호 하나만, 전화 번호 공동 소유 안됨)

510-1111 홍길동

510-2222 홍놀부

510-6666 윤두리

510-7777 박슬기


전화번호 : 소유자 주민등록번호 = 1 : n (전화 번호 하나를 여러 사람이 공동 소유할 수 있지만, 한 사람이 전화번호 여러개를 가질 수는 없음)

510-1111 홍길동

510-1111 홍놀부

510-6666 윤두리

510-6666 박슬기


전화번호 : 소유자 주민등록번호 = n : 1 (한 사람이 전화번호를 여러개 가질 수 있지만, 전화번호 하나를 여러 사람이 공유할 수 없음)

510-1111 홍길동

510-2222 홍길동


전화번호 : 소유자 주민등록번호 = m : n (한 사람이 전화번호를 여러개 가질 수도 있고, 한 전화번호를 여러사람들이 공유할 수도 있음)

510-1111 홍길동

510-2222 홍길동

510-1111 홍놀부


예) 학생과 학과 사이의 관계

학생과 학과의 경우는 n:1 관계이다

홍길동    컴퓨터

연흥부    컴퓨터

연놀부    역사

박녹두    역사

그런데 여기서 이중 전공을 허용한다면 n:1관계가 n:m 관계가 된다.

홍길동    컴퓨터

홍길동    역사

연흥부    컴퓨터

연놀부    컴퓨터

연놀부    역사


그렇다면 교수 : 과목과의 관계는?  m:n





2장을 여기서 중간에 끊고 다음 글에서 이어가야겠다...






Comments