⚠️ 공부한 내용을 정리하는 공간입니다. 설명이 부족하거나 옳바르지 못한 부분이 있을 수 있습니다.
옳바르지 못한 내용을 발견하셨다면 댓글로 알려주시길 부탁드립니다. 수정하도록 하겠습니다.
들어가기 전에 지금 작성하고 있는 글을 간략히 요약하면 데이터베이스를 사용하는 이유에 대해 조사하여 필자 나름의 결론을 내는 글이다. 만약 누군가 데이터베이스를 사용해야하는 이유에 대해 물었을 때 "그냥 좋다고 해서"라고 말하는 사람과 왜 사용하는지 뚜렷하게 자기 나름의 결론이 있는 사람이 있다면 후자의 사람에게 일을 맡기는 것이 더 믿음직스럽지 않나? 필자는 그렇게 생각한다.
서두가 길지만 꼭 말하고 싶은 인물이 있다. 그 인물은 바로 필자의 전공 교수님이다. 교수님께서는 항상 수업을 들어가기 전 '아는 것'에 대해 강조하셨다. 지금까지 너희들이 안다고 했던 것은 진짜 알고 있는 것인지 의문을 가지고 항상 생각을 파고들어야 한다고 하셨다. 그러면서 '아는 것'을 항상 'abstract(추상화)'와 연관지어 말씀하시곤 하셨다. 그래서 필자는 한동안 교수님의 말씀에 심취한 나머지 미칠 지경으로 하나의 단어에 대해 끊임없이 생각하곤 했었다. 물론 지금은 스스로와 타협하여 적당히 파고드는 정도로만 생각하고 있다.
그래서 필자가 하고 싶은 말은 "어떠한 개념에 대해 공부할 때 그 공부 과정이 대단히 학구적이지 못할지언정 스스로 생각하여 자기 나름의 결론을 내자!"이다. 그러니 지금 작성하고 있는 글은 물론이고 앞으로 작성할 글 모두는 필자의 생각을 필자 나름의 조사(책, 인터넷 등)를 거쳐 결론을 지은 글이기 때문에 어설픈 부분도, 옳바르지 못한 부분도 있을 수 있음을 인지해주셨으면 한다.
<목차>
1. 데이터베이스(Database)란 무엇인가? (What)
2. 데이터베이스를 왜 사용하는 것인가? (Why)
3. 데이터베이스는 어떻게 사용하는 것인가? (How)
1. 데이터베이스(Database)란 무엇인가?
data(자료) + base(기지) = database(자료들의 기지)?
데이터베이스는 여러 데이터가 모여있는 하나의 큰 덩어리이다. 그런데 단순히 그 덩어리 안에 무작위 데이터들이 모여있는 것은 아닐 것이다. 그 덩어리에 들어 있는 데이터들은 서로 긴밀한 관계를 가진다. 우리가 사용하는 데이터베이스는 서로 연관이 있는 객체(Entity)들이 가지고 있는 속성(Attribute)과 각 객체들 간 어떤 관계(Relationship)를 지니는지에 대한 정보를 담고 있다.
여기서 알아야 하는 개념이 있다.
- Entity: 사람, 장소, 사물 등이 객체에 해당
- Attribute: Entity가 가지는 속성
- Relationship: Entity 사이의 관계
위 개념을 숙지한 상태로 아래 데이터베이스를 이해해보자. 아래 데이터베이스는 pt 전용 헬스장 데이터베이스이다. 이 헬스장에서 회원은 한 명의 담당 트레이너에게 수업을 받는다. 트레이너는 여러 명의 회원을 담당하여 수업한다.
⬇ 회원
회원 번호 | 회원 이름 | PT횟수 | 전화번호 | 집주소 | 담당 트레이너 번호 |
⬇ 트레이너
트레이너 번호 | 트레이너 이름 | 전화번호 | 집주소 |
두 객체(회원, 트레이너)가 있고 각 객체는 속성을 가지고 있다. 이렇게 우리는 위 데이터베이스에서 객체와 속성을 확인할 수 있다. 그렇다면 객체 사이의 관계는 위 데이터베이스에서 확인이 가능한가? 답은 가능하다이다. 관계에 대해서 이해하려면 관계의 종류에 대해 이해할 필요가 있다.
Relationship의 종류
관계에는 One-to-One, One-to-Many, Many-to-Many 이렇게 3개의 종류가 있다. 연인 관계를 예로 들어보자.
보편적으로 한 명의 사람은 한 명의 사람과 연인 관계를 맺는다. 이 경우를 one-to-one 관계라고 할 수 있다.
그런데 한 명이 문어다리를 걸치는 사람이라면 one-to-many 관계이고 두 명 모두 문어다리를 걸친다면 이 경우는 many-to-many라고 할 수 있다.
두 객체의 관계가 One-to-One이라면 두 객체 중 한 객체의 Primary key(기본키)를 다른 객체의 속성으로 넣어주면 된다.
두 객체의 관계가 One-to-Many라면 두 객체 중 One에 해당하는 객체의 Primary key(기본키)를 Many에 해당하는 객체의 속성으로 넣어준다.
두 객체의 관계가 Many-to-Many라면 두 객체가 One-to-Many 관계를 맺을 수 있도록 새로운 테이블을 생성하여 Mapping하는 과정을 거쳐준다.
즉 데이터베이스에서 관계를 확인하려면 한 객체에 다른 객체의 기본키가 있는지를 확인하면 된다.
여기서 기본키는 객체를 고유하게 구분할 수 있게 하는 최소의 정보이다.
이제 Realtionship의 종류를 이해했다. 그렇다면 위 데이터베이스에서 두 객체 회원과 트레이너의 관계를 확인할 수 있을 것이다. 트레이너객체의 기본키인 트레이너 번호가 회원 객체의 속성에 있다. 그러므로 두 객체의 관계는 One-to-Many관계이며 트레이너가 One쪽에 해당한다.
여기서 언급한 Primary Key는 추후에 데이터베이스를 시각적으로 표현하는데 사용하는 E-R(Entity-Relationship) Diagram을 설명할 때 자세하게 설명하도록 하겠다.
2. 데이터베이스를 왜 사용하는 것인가?
이제 데이터베이스가 정확히 무엇인지를 알았다. 데이터베이스는 객체의 속성과 각 객체들 간의 관계를 저장한다. 그렇다면 왜 데이터베이스를 사용하는 것인가? 보통 데이터베이스를 사용하는 경우는 데이터의 양이 상당히 많은 경우 데이터를 효율적으로 사용하기 위해 사용한다. 왜냐면 데이터베이스는 객체의 속성과 관계를 저장하기 때문에 그러한 데이터베이스의 특징을 통해 데이터베이스 사용자는 데이터베이스를 사용하여 더 많은 정보를 얻을 수 있다. 또한 데이터베이스는 이전에 사용했던 방식(Spreadsheet, File)들이 같은 데이터가 여러 곳에 저장되거나 중복/복사됨에 따라 데이터 무결성을 지키지 못하는 한계를 극복했기 때문에 많은 기업, 단체들이 데이터베이스를 사용한다고 생각한다. 이외에도 데이터베이스를 사용하면 얻을 수 있는 이점들이 있다.
데이터베이스를 사용하면 얻을 수 있는 이점
- 같은 양의 데이터로부터 더 많은 정보를 얻을 수 있음
- 데이터를 공유하여 사용이 가능
- 중복을 제어할 수 있어 속도도 빠르고 업데이트도 수월함
- 완전성과 무결성을 향상시킴
- 보안이 향상
- 생상성 향상
- 데이터의 독립성을 제공
3. 데이터베이스 어떻게 사용하는 것인가?
필자가 앞에서 데이터베이스를 설명할 때 예시로 든 회원과 트레이너 객체가 있다. 두 객체에 대한 실제 데이터가 입력되면 데이터베이스는 이렇게 이루어질 것 이다.
회원 테이블
회원 번호 | 회원 이름 | PT 횟수 | 전화번호 | 집주소 | 담당 트레이너 번호 |
1 | 김가나 | 10 | 010-****-**** | A마을 | 3 |
2 | 김다라 | 32 | 010-****-**** | A마을 | 2 |
3 | 김마바 | 13 | 010-****-**** | A마을 | 1 |
4 | 김염소 | 1 | 010-****-**** | B마을 | 3 |
5 | 김박하 | 23 | 010-****-**** | C마을 | 2 |
트레이너 테이블
트레이너 번호 | 트레이너 이름 | 전화번호 | 집주소 |
1 | 김쭁극 | 010-****-**** | B마을 |
2 | 뎩쓰 | 010-****-**** | A마을 |
3 | 옦택견 | 010-****-**** | B마을 |
PT 전용으로 헬스장을 운영하는 사장은 항상 PT횟수가 얼마 남지 않은 회원을 관리하기 위해 노력을 해야 할 것이다. 그렇다면 위 테이블을 통해 우리는 사장이 원하는 목적을 달성하기 위한 의미있는 데이터를 제공할 수 있다. 어떻게? 바로 PT 횟수가 5회 이하인 회원 데이터를 뽑아낸 다음 해당 회원을 담당하는 트레이너를 확인하여 해당 트레이너에게 회원이 횟수를 추가하게 만들도록 최선을 다해 관리하라고 한다거나 혹은 PT 횟수가 얼마 남지 않은 회원 대상으로 프로모션을 하는 등의 행동을 유도할 수 있다. 이렇게 데이터베이스를 잘 활용하면 의미있는 데이터를 만들 수 있고 데이터를 통해 생산성을 향상할 수 있다.
이제 그렇다면 어떻게 테이블을 조작하여 의미있는 데이터를 만들어내는지를 알아야 할 필요가 있다. 이와 관련된 내용은 Relational database를 처리하는 이론적인 방법인 관계대수(Relational Algebra)를 설명하는 글에서 확인할 수 있다.
'🖥️ Computer Science > Database (DB)' 카테고리의 다른 글
[DB] SQL에 대하여 (1) | 2023.11.28 |
---|---|
[DB] Relational Database와 Relational Algebra(관계대수) (0) | 2023.11.27 |