티스토리 뷰
데이터베이스, 그게 대체 뭔데?!
데이터베이스란, 데이터를 효율적으로 관리하기 위한 시스템을 말합니다.
데이터베이스의 형식을 이해하기 위해선 entity와 attribute, relation에 대한 간단한 이해가 필요합니다.
먼저, entity는 특정한 data들의 집합이 의미하는 바를 말합니다.
대표적인 예제로, employee라는 entity가 있다면 이 entity가 가진 data로는 연봉, 근로계약날짜, 이름, 나이, 성별, 거주지, 전화번호, 주민번호 등이 있습니다.
즉, employee는 주민번호, 이름, 전화번호, 거주지, 성별, 나이, 근로계약날짜, 연봉로 표현할 수 있다는 것이죠!
이때 employee를 설명하는 data들인 주민번호, 이름, 기타 등등을 attribute라고 합니다.
attribute들도 각각의 특성에 따라 여러 이름이 있습니다.
1. 주민번호 : 한 사람의 주민번호는 다른 사람과 절대 겹칠 수 없습니다. 이 말은 주민번호로 사람을 구별할 수 있다는 것입니다.
employee도 사람이므로, 주민번호로 구별이 가능합니다.
이렇게 "고유"한 attribute를 primary key라고 합니다.
2. 성별, 나이 : 성별과 나이는 주민번호를 통해 알 수 있습니다.
예를 들어, 주민등록번호가 970224-2 XXXXXX 일 때 앞의 2자리를 통해 나이를 알 수 있고, 7번째 숫자를 통해 성별을 알 수 있기 때문입니다.
이렇게 다른 attribute로부터 유도할 수 있는 attribute를 derived attribute라고 합니다.
그리고, 주민등록번호는 composite attribute라고 할 수 있습니다.
3. 전화번호, 이름 : 반면, 전화번호는 010-2050-XXXX 일 때 010/2050/XXXX의 별개로는 의미를 갖지 않습니다.
마찬가지로 이름도 박우진 일 때 의미가 있지 박/우/진 으로 따로 보면 의미가 사라지게 됩니다.
이런 식으로 고유의 의미를 잃게 되는 것을 single attribute라고 합니다.
4. 전화번호 : 한 사람이 여러 개 가질 수 있는 몇 안 되는 것 중 하나가 전화번호입니다.
업무용 핸드폰과 핸드폰이 있는 것처럼, 집 전화번호와 휴대전화 번호를 같이 저장하는 경우가 빈번하죠.
이런 attibute는 multivalued attribute라고 합니다.
반대로, 주민등록번호처럼 하나밖에 가질 수 없는 것은 single-valued attribute라고 합니다.
employee라는 entity에 대해서 각 attribute를 특성과 함께 정리해보았는데, diagram으로 나타내면 다음과 같이 나타낼 수 있습니다.
경우 1 |
경우 2 |
employee |
employee |
주민번호 성별 나이 {전화번호} 거주지 근로계약날짜 연봉 |
주민번호 성별() 나이() {전화번호} 거주지 근로계약날짜 연봉 |
[경우 1]과 [경우 2]의 차이는 간단합니다.
[경우 1]은 주민번호가 composite attribute이고 주민번호를 생년월일/성별로 나누어서 성별과 나이 data를 얻은 상황이고,
[경우 2]는 성별과 나이가 주민번호의 data로 부터 유도된 상황입니다. 즉 성별, 나이를 derived entity라고 본 것입니다.
사실 [경우 1]이나 [경우 2]나 같은 상황입니다 ㅋㅋㅋ 단순 말장난일 뿐.
위 diagram에서 보실 점은
1. primary key는 밑줄을 그어 나타낸다.
2. composite attribute는 하위 attribute를 들여쓰기하여 나타낸다.
3. derived attribute는 ()를 통해 나타낸다.
4. 여러 값을 가질 수 있는 attribute는 {}로 감싸서 나타낸다.
가 되겠습니다.
이때 여러분이 "Primary key가 될 수 있는 attribute가 많지 않을까? 그런 attribute는 뭐라고 부를까?" 하는 의문을 가지실 수 있습니다.
답변을 하자면, "고유"한 attribute이면서 "쪼갤 수 없는" attribute는 candidate key라고 합니다.
"쪼갤 수 없는"의 의미는 쪼개도 고유한 attribute라면 candidate key가 아니다~.라는 것으로, 굳이 주민번호와 이름을 합치지 않아도 주민번호 자체가 '고유'하므로 주민번호와 이름의 조합은 candidate key가 아닙니다.
하지만, 주민번호로 인해 주민번호와 이름의 조합은 primary key가 될 수 있죠?
즉, candidate key이면 primary key이지만, primary key면 항상 candidate key는 아니다.라는 것을 알 수 있습니다.
마지막으로 relation이란 entity들의 관계를 말합니다.
앞서 employee entity를 살펴봤는데, office entity가 있을 수 있겠죠?
이때 employee와 office entity를 연결하기 위해 추가적인 attribute로 '회사명'이 필요할 수 있습니다.
이렇게 entity와 entity를 연결하기 위한 attribute는 foreign key라고 합니다.
그리고, 한 employee는 한 office에만 취직할 수 있는 반면, 한 office는 여러 employee를 고용할 수 있습니다.
제가 방금 말한 것을 mapping cardinality라고 합니다.
이 부분은 다음 포스트에서 포스팅하도록 하겠습니다.
많은 도움이 되었으면 좋겠고, 이상한 부분이나 설명이 모호해 부연 설명이 필요하다면 댓글 남겨주세요. ^^
'학교공부 > 데이터베이스' 카테고리의 다른 글
[데이터베이스] XAMPP를 사용하여 DB와 php를 이용해 간단한 웹사이트 만들기 (2) | 2017.08.27 |
---|---|
[데이터베이스] 데이터베이스 기말고사 요점정리 공유합니다. (3) | 2017.07.30 |
[데이터베이스] Relation의 Mapping Cardinality (0) | 2017.07.26 |
[데이터베이스] 데이터베이스 중간고사 요점정리 공유합니다. (0) | 2017.07.26 |