용's
[Chap 2-1] 개체-관계 모델(Entity-Relationship model) 본문
[Chap 2-1] 개체-관계 모델(Entity-Relationship model)
TaeYOng's 2014. 10. 12. 19:182.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장을 여기서 중간에 끊고 다음 글에서 이어가야겠다...
'Computer Science > Database' 카테고리의 다른 글
[Chap 6] 도메인, 참조 무결성, 함수적 종속 (0) | 2014.12.04 |
---|---|
[Chap 2-2] 개체-관계 모델(Entity-Relationship mode) (0) | 2014.10.13 |
[Chap 1]데이터베이스 기본 개념 및 용어 (0) | 2014.10.12 |