클래스 다이어그램(Class Diagram)
비슷한 종류의 객체들을 정형화 한것!
클래스 다이어그램은 "이 세상의 모든 정보를 객체로 만들자"라는 목적으로 만들어졌다.
실제로 세상의 대부분의 것을 클래스 다이어그램으로 표현이 가능하다.
객체 지향 데이터 모델이다.
UML (Unified Modeling Language)
다이어 그램을 그리기 위한 언어, 기호로 구조를 표현한다
UML 클래스 다이어그램의 핵심 요소
◎ Class(클래스)
◎ Relationship(관계)- Associations(연관), Generalizations(일반화), Dependenct(의존), Realization(실제화),Compositon(구성),Aggregation(집합)
◎ Attributes(속성)
◎ Operation(명령)
◎ Constraint Rules and Notes(제약조건과 메모)
이 중 클래스와 관계가 제일 중요하다.
하나씩 살펴보겠다.
1. Class(클래스), 2. Attributes(속성), 3. Operation(명령)

클래스는 유사한 속성, 명령, 관계 및 행동 양식을 가지는 객체들 집합의 틀을 의미한다.
DB 안에 실재(entity)하는 형태(type)로 저장된다.
대부분 명사로 표현됨
4. Relationship(관계)
-Associations(연관)

클래스와 클래스 사이의 대등한 관계
대부분 동사로 표현됨
[Student]
이는 역할(Role)을 의미한다.
[instructor]
이는 역할 이름(Role Name)으로 Faculty의 역할은 instructor라는 것을 의미한다.
[instructs]
이는 연관 이름(Association Name)으로 지금 이 연결이 어떤 것에 관련된 연결인지를 명시적으로 표현하도록 해주는 것이다.
[instructs 관계에서의 ‘1..*’, ‘*’]
이는 다중성(Multiplicity or Cardinality)를 의미하며 “1..*”의 의미는 Student 한 명에 대해서 Faculty는 최소 1명, 최대 무한대를 의미한다. 그리고 “*”은 제약 없음을 의미하며, Faculty 한 명에 대해서 Student는 어떠한 제약 없이 존재할 수 있음을 의미한다.
[화살표(→)]
화살표는 방향성을 가진 연관을 의미한다. 이는 Student가 듣는 Course에 대해서는 명시적으로 작성이 되어야 하나, Course를 듣는 Student는 명시적으로 표현될 필요 없음을 의미한다. 이러한 연관 관계를 보고 단방향 연결(Navigable or uni-directional association)이라 한다.
[본인에게 돌아오는 화살표]
이것을 “재귀적 연관(Reflexive association)”을 의미한다. 여기서 이것의 의미는 하나의 Course를 듣기 위해서는 0개 이상 3개 이하의 Course를 선행적으로 들어야 함을 의미한다.
이름과 역할(Roll Name and Role)
연관은 고유의 이름을 가지고있고 조건이 있다.
- 의미가 명확해야 한다.
- 이름은 연관 선의 중앙에 라벨(label)로 존재해야 한다.
- 일반적으로 동사 혹은 동사구로 구성돼야 한다.
역할은 클래스를 연결하는 연관의 끝에 존재해야 합니다. 그리고 이러한 역할은 다음을 충족합니다.
- 보통 명사나 명사구로 구성된다.
- 재귀적 연관에 관해서는 필수적으로 있어야 한다. 요약하자면 다이어그램을 그릴 때 동사를 사용하면 연관을 의미하고, 명사를 사용하면 클래스를 의미하게 된다.
multiplicity(cardinality): minimum .. maximaum

학부클래스를 예로 들면 학생의 수는 1..* 이 될 수 있다.(*는 unbound). [학부클래스 -> 학생클래스 ]
사람 클래스를 예로 들면 직업의 수는 0..* 이 될 수 있다. [사람클래스 -> 직업클래스]
Reflexive association 의 예) 선수과목 관계 [강좌->강좌]
association의 클래스화

위 그림처럼 필요에 따라서 association도 클래스화가 가능하다.
관계에 대한 구체적인 정보를 표현하고싶다면 association클래스를 정의함으로써 가능하다
예를 들어 2010년 contract와 2020년 contract가 다를 것이다. 이런 구분이 필요할 때 사용한다.
-Aggregation(집합)

집합은 여러 개를 하나로 합치는 것을 의미하며, 여러 관계 정의 중 하나이다. 이런 모델은 “is part-part of” 관계를 만족하며 여기서 상위 클래스를 전체(Whole)라 하고 하위 클래스를 부분(Part)이라 한다.. 또한, 전체는 일반적으로 한 개입니다.
전체의 다중성은 표기하지 않는다. 부분의 다중성은 표기를 한다(ex 1..1, 3..*)
다이아 그램에서는 속이 빈 다이아몬드로 표현한다
-Compositon(구성)
구성은 집합의 강한 형태이다. 전체는 부분의 유일한 소유자여야 한다. 즉, 한 개여야 한다. 또한, 전체의 다중성은 0 또는 1이어야만 한다. 그리고 부분의 생명 주기는 전체의 생명 주기에 의존하게 된다. 요약하면 생명 주기가 다른 집합은 그냥 집합이고, 같은 경우에는 구성이라고 할 수 있다. 아래의 그림에서 Polygon-Point가 집합이였다면 Polygon이 사라져도 Point는 사라지지 않는다. 하지만 구성이라면. Ploygon이 사라지면 Point도 사라진다.
다이아그램에서는 속이 찬 다이아몬드로 표현한다.

Polygon을 지우면 Point도 지워진다.
Polygon을 이루기 위해서 최소 3개의 점이 필요하기 때문에 3..*이다
-Generalizations(일반화)<->Specialization(구체화)

“특정 하위 클래스(specialized class 또는 subclass)”의 어떤 객체가 “일반적인 상위 클래스(generalized class 또는 super-class)”의 객체의 종류이면 이를 일반화 관계라고 한다. 이러한 관계는 “is kind of”의 관계라고 한다. 이때 추상화(abstract) 클래스 설정이 있는 데, 이 설정을 하게 되면 데이터가 생성되지 않는다. 이것의 생성은 하위 클래스에서 생성이 되게 한다.
여기서 도형(Shape)은 추상 클래스이자 상위 클래스가 된다. 그리고 원(Circle)은 하위 클래스가 된다. 여기서 둘 관계를 “원은 도형의 일종이다(Circle is a kind of Shape)”라고 할 수 있다. 그리고 여기는 생략이 되지만 일반적으로 상위 클래스가 가지고 있는 관계들도 하위 클래스는 받게 된다.
좀 더 보충하면 동물과 기린 사이의 관계를 생각해보자. 기린은 동물의 일종(is a kind of)이다. 동물에 들어가는 정보에는 나이, 성별 등이 있을 것이다. 기린도 나이, 성별 등을 성보가 있다. 왜냐하면, 기린도 동물의 일종이기 때문이다. 여기서 추가로 목의 길이등이 추가정보로 들어 갈 수 있다.. 결과적으로 하위 클래스로 갈수록 클래스가 가지는 정보는 점점 많아짐을 알 수 있다.

상속(Inheritance)
일반화 관계에서 상위 클래스가 가지고 있는 관계들을 하위 클래스도 받게 된다. 이를 보고 상속이라고 한다. 이런 상속은 상위 클래스로부터 속성, 명령, 관계를 받는 것을 이야기하며, 하위 클래스는 속성과 명령, 관계를 추가하고, 상속받은 명령을 “다시 정의(Refine 또는 Override)” 할 수 있다.
위의 그림에서 Employee와 Division 사이 관계 내용은 Professor에도 그대로 상속된다.
-Dependency(의존)
Dependency는 클래스 다이어그램에서 일반적으로 제일 많이 사용되는 관계로서, 어떤 클래스가 다른 클래스를 참조하는 것을 말한다.

-Realization(실제화)
Realization은 interface의 spec(명세, 정의)만 있는 메서드를 오버라이딩 하여 실제 기능으로 구현 하는 것을 말한다.

5. Constraint Rules and Notes(제약조건과 메모)
의미: UML 요소에 지정된 조건이나 제약
표현: {} 사이에 표현
노트(Note)로 표현할 경우 관련 UML 요소에 점선으로 연결함
요약
클래스 다이어그램은 비슷한 종류의 객체들을 정형화 한것이다.
핵심요소는 아래의 것들이다.
◎ Class(클래스)
◎ Relationship(관계)- Associations(연관), Generalizations(일반화), Dependenct(의존), Realization(실제화),Compositon(구성),Aggregation(집합)
◎ Attributes(속성)
◎ Operation(명령)
◎ Constraint Rules and Notes(제약조건과 메모)
클래스는 유사한 속성, 명령, 관계 및 행동 양식을 가지는 객체들 집합의 틀을 의미한다.
속성은 멤버변수, 명령은 함수라고 생각하면 쉬울것이다.
관계에는 연관,일반화,집합,구성등이 있다.
연관은 대부분 동사이며 클래스와 클래스사이에 위치한다
일반화는 “is kind of”의 관계이며, 하위 클래스 -> 상위 클래스 관계를 의미한다.
집합은 "is part-part of” 관계이다
구성은 구성은 집합의 강한 형태이다. 전체는 부분의 유일한 소유자여야 한다. 즉, 한 개여야 한다.

'Computer Science > 데이터베이스' 카테고리의 다른 글
관계 데이터 모델1- 관계 모델의 기본 (0) | 2022.10.13 |
---|---|
UML 클래스 다이어그램3 - Weak Entity Sets, E-R Model (0) | 2022.10.10 |
UML 클래스 다이어그램2 - 설계 예시, 제약 사항 (0) | 2022.10.10 |
데이터베이스란? (0) | 2022.10.09 |
데이터베이스의 역사 (0) | 2022.10.09 |
클래스 다이어그램(Class Diagram)
비슷한 종류의 객체들을 정형화 한것!
클래스 다이어그램은 "이 세상의 모든 정보를 객체로 만들자"라는 목적으로 만들어졌다.
실제로 세상의 대부분의 것을 클래스 다이어그램으로 표현이 가능하다.
객체 지향 데이터 모델이다.
UML (Unified Modeling Language)
다이어 그램을 그리기 위한 언어, 기호로 구조를 표현한다
UML 클래스 다이어그램의 핵심 요소
◎ Class(클래스)
◎ Relationship(관계)- Associations(연관), Generalizations(일반화), Dependenct(의존), Realization(실제화),Compositon(구성),Aggregation(집합)
◎ Attributes(속성)
◎ Operation(명령)
◎ Constraint Rules and Notes(제약조건과 메모)
이 중 클래스와 관계가 제일 중요하다.
하나씩 살펴보겠다.
1. Class(클래스), 2. Attributes(속성), 3. Operation(명령)

클래스는 유사한 속성, 명령, 관계 및 행동 양식을 가지는 객체들 집합의 틀을 의미한다.
DB 안에 실재(entity)하는 형태(type)로 저장된다.
대부분 명사로 표현됨
4. Relationship(관계)
-Associations(연관)

클래스와 클래스 사이의 대등한 관계
대부분 동사로 표현됨
[Student]
이는 역할(Role)을 의미한다.
[instructor]
이는 역할 이름(Role Name)으로 Faculty의 역할은 instructor라는 것을 의미한다.
[instructs]
이는 연관 이름(Association Name)으로 지금 이 연결이 어떤 것에 관련된 연결인지를 명시적으로 표현하도록 해주는 것이다.
[instructs 관계에서의 ‘1..*’, ‘*’]
이는 다중성(Multiplicity or Cardinality)를 의미하며 “1..*”의 의미는 Student 한 명에 대해서 Faculty는 최소 1명, 최대 무한대를 의미한다. 그리고 “*”은 제약 없음을 의미하며, Faculty 한 명에 대해서 Student는 어떠한 제약 없이 존재할 수 있음을 의미한다.
[화살표(→)]
화살표는 방향성을 가진 연관을 의미한다. 이는 Student가 듣는 Course에 대해서는 명시적으로 작성이 되어야 하나, Course를 듣는 Student는 명시적으로 표현될 필요 없음을 의미한다. 이러한 연관 관계를 보고 단방향 연결(Navigable or uni-directional association)이라 한다.
[본인에게 돌아오는 화살표]
이것을 “재귀적 연관(Reflexive association)”을 의미한다. 여기서 이것의 의미는 하나의 Course를 듣기 위해서는 0개 이상 3개 이하의 Course를 선행적으로 들어야 함을 의미한다.
이름과 역할(Roll Name and Role)
연관은 고유의 이름을 가지고있고 조건이 있다.
- 의미가 명확해야 한다.
- 이름은 연관 선의 중앙에 라벨(label)로 존재해야 한다.
- 일반적으로 동사 혹은 동사구로 구성돼야 한다.
역할은 클래스를 연결하는 연관의 끝에 존재해야 합니다. 그리고 이러한 역할은 다음을 충족합니다.
- 보통 명사나 명사구로 구성된다.
- 재귀적 연관에 관해서는 필수적으로 있어야 한다. 요약하자면 다이어그램을 그릴 때 동사를 사용하면 연관을 의미하고, 명사를 사용하면 클래스를 의미하게 된다.
multiplicity(cardinality): minimum .. maximaum

학부클래스를 예로 들면 학생의 수는 1..* 이 될 수 있다.(*는 unbound). [학부클래스 -> 학생클래스 ]
사람 클래스를 예로 들면 직업의 수는 0..* 이 될 수 있다. [사람클래스 -> 직업클래스]
Reflexive association 의 예) 선수과목 관계 [강좌->강좌]
association의 클래스화

위 그림처럼 필요에 따라서 association도 클래스화가 가능하다.
관계에 대한 구체적인 정보를 표현하고싶다면 association클래스를 정의함으로써 가능하다
예를 들어 2010년 contract와 2020년 contract가 다를 것이다. 이런 구분이 필요할 때 사용한다.
-Aggregation(집합)

집합은 여러 개를 하나로 합치는 것을 의미하며, 여러 관계 정의 중 하나이다. 이런 모델은 “is part-part of” 관계를 만족하며 여기서 상위 클래스를 전체(Whole)라 하고 하위 클래스를 부분(Part)이라 한다.. 또한, 전체는 일반적으로 한 개입니다.
전체의 다중성은 표기하지 않는다. 부분의 다중성은 표기를 한다(ex 1..1, 3..*)
다이아 그램에서는 속이 빈 다이아몬드로 표현한다
-Compositon(구성)
구성은 집합의 강한 형태이다. 전체는 부분의 유일한 소유자여야 한다. 즉, 한 개여야 한다. 또한, 전체의 다중성은 0 또는 1이어야만 한다. 그리고 부분의 생명 주기는 전체의 생명 주기에 의존하게 된다. 요약하면 생명 주기가 다른 집합은 그냥 집합이고, 같은 경우에는 구성이라고 할 수 있다. 아래의 그림에서 Polygon-Point가 집합이였다면 Polygon이 사라져도 Point는 사라지지 않는다. 하지만 구성이라면. Ploygon이 사라지면 Point도 사라진다.
다이아그램에서는 속이 찬 다이아몬드로 표현한다.

Polygon을 지우면 Point도 지워진다.
Polygon을 이루기 위해서 최소 3개의 점이 필요하기 때문에 3..*이다
-Generalizations(일반화)<->Specialization(구체화)

“특정 하위 클래스(specialized class 또는 subclass)”의 어떤 객체가 “일반적인 상위 클래스(generalized class 또는 super-class)”의 객체의 종류이면 이를 일반화 관계라고 한다. 이러한 관계는 “is kind of”의 관계라고 한다. 이때 추상화(abstract) 클래스 설정이 있는 데, 이 설정을 하게 되면 데이터가 생성되지 않는다. 이것의 생성은 하위 클래스에서 생성이 되게 한다.
여기서 도형(Shape)은 추상 클래스이자 상위 클래스가 된다. 그리고 원(Circle)은 하위 클래스가 된다. 여기서 둘 관계를 “원은 도형의 일종이다(Circle is a kind of Shape)”라고 할 수 있다. 그리고 여기는 생략이 되지만 일반적으로 상위 클래스가 가지고 있는 관계들도 하위 클래스는 받게 된다.
좀 더 보충하면 동물과 기린 사이의 관계를 생각해보자. 기린은 동물의 일종(is a kind of)이다. 동물에 들어가는 정보에는 나이, 성별 등이 있을 것이다. 기린도 나이, 성별 등을 성보가 있다. 왜냐하면, 기린도 동물의 일종이기 때문이다. 여기서 추가로 목의 길이등이 추가정보로 들어 갈 수 있다.. 결과적으로 하위 클래스로 갈수록 클래스가 가지는 정보는 점점 많아짐을 알 수 있다.

상속(Inheritance)
일반화 관계에서 상위 클래스가 가지고 있는 관계들을 하위 클래스도 받게 된다. 이를 보고 상속이라고 한다. 이런 상속은 상위 클래스로부터 속성, 명령, 관계를 받는 것을 이야기하며, 하위 클래스는 속성과 명령, 관계를 추가하고, 상속받은 명령을 “다시 정의(Refine 또는 Override)” 할 수 있다.
위의 그림에서 Employee와 Division 사이 관계 내용은 Professor에도 그대로 상속된다.
-Dependency(의존)
Dependency는 클래스 다이어그램에서 일반적으로 제일 많이 사용되는 관계로서, 어떤 클래스가 다른 클래스를 참조하는 것을 말한다.

-Realization(실제화)
Realization은 interface의 spec(명세, 정의)만 있는 메서드를 오버라이딩 하여 실제 기능으로 구현 하는 것을 말한다.

5. Constraint Rules and Notes(제약조건과 메모)
의미: UML 요소에 지정된 조건이나 제약
표현: {} 사이에 표현
노트(Note)로 표현할 경우 관련 UML 요소에 점선으로 연결함
요약
클래스 다이어그램은 비슷한 종류의 객체들을 정형화 한것이다.
핵심요소는 아래의 것들이다.
◎ Class(클래스)
◎ Relationship(관계)- Associations(연관), Generalizations(일반화), Dependenct(의존), Realization(실제화),Compositon(구성),Aggregation(집합)
◎ Attributes(속성)
◎ Operation(명령)
◎ Constraint Rules and Notes(제약조건과 메모)
클래스는 유사한 속성, 명령, 관계 및 행동 양식을 가지는 객체들 집합의 틀을 의미한다.
속성은 멤버변수, 명령은 함수라고 생각하면 쉬울것이다.
관계에는 연관,일반화,집합,구성등이 있다.
연관은 대부분 동사이며 클래스와 클래스사이에 위치한다
일반화는 “is kind of”의 관계이며, 하위 클래스 -> 상위 클래스 관계를 의미한다.
집합은 "is part-part of” 관계이다
구성은 구성은 집합의 강한 형태이다. 전체는 부분의 유일한 소유자여야 한다. 즉, 한 개여야 한다.

'Computer Science > 데이터베이스' 카테고리의 다른 글
관계 데이터 모델1- 관계 모델의 기본 (0) | 2022.10.13 |
---|---|
UML 클래스 다이어그램3 - Weak Entity Sets, E-R Model (0) | 2022.10.10 |
UML 클래스 다이어그램2 - 설계 예시, 제약 사항 (0) | 2022.10.10 |
데이터베이스란? (0) | 2022.10.09 |
데이터베이스의 역사 (0) | 2022.10.09 |