Home
>
DB
>
💾[Database] 데이터베이스 모델링.
Database
💾[Database] 데이터베이스 모델링.
1️⃣ 정보 시스템 구축의 개요.
- 정보 시스템을 구축하기 위해서는 일반적으로 “분석-설계-구현-시험-유지.보수”라는 5단계를 거칩니다.
- 분석은 프로젝트의 첫 번째 단계로 시스템 분석 또는 요구 사항 분석이라고도 합니다.
- 요구 사항 분석은 ‘무엇을(what)’할지 결정하는 것으로, 이 단계에는 사용자 인터뷰와 업무 조사 등을 수행합니다.
-
분석은 프로젝트의 첫 단추를 끼우는 중요한 단계이므로 당연히 많은 시간 동안 심혈을 기울여야 합니다.
- 두 번째로 설계 단계는 시스템 설계 또는 프로그램 설계라고도 하며, 구축하고자 하는 시스템을 ‘어떻게(how)’ 설계할 것인지 결정합니다.
- 설계 단계가 끝나면 그 결과 문서를 프로그래머(또는 코더)에게 넘겨주고, 프로그래머는 설계서에 있는 대로 프로그램을 작성하기만 하면 됩니다.
- 따라서 일반적으로는 시스템 설계가 끝나면 가장 큰 작업을 마친 것으로 여깁니다.
- 대부분의 프로젝트에서는 분석과 설계 단계가 전체 공정의 50% 이상을 차지합니다.
2️⃣ 데이터베이스 모델링과 필수 용어.
- 데이터베이스 모델링이란 현실 세계에서 사용되는 데이터를 MySQL에 어떻게 옮겨놓을지 결정하는 과정으로, 정보 시스템 구축 시 분석과 설계 단계에서 가장 중요한 작업 중 하나입니다.
- 인터넷 쇼핑몰을 생각해봅시다.
- 인터넷 쇼핑몰에는 사람(또는 회원)이 필요합니다.
- 그렇다면 이 사람을 어떻게 MySQL에 넣을까요?
- 데이터베이스에서는 사람을 나타내는 여러 가지 특성(속성)을 추출하여 저장합니다.
- 어떤 사람의 신분을 증명하는 신분증에 이름, 주민등록번호, 주소 등의 정보가 있는 것과 비슷한 개념입니다.
- 일상 생활에서 판매하는 제품도 마찬가지입니다.
- 제품 자체를 컴퓨터에 넣을 수는 없으니 제품명, 가격, 제조일, 제조사, 남은 수량 등을 저장합니다.
-
이때 정보가 단편적으로 저장되는 것이 아니라 테이블이라는 형식에 맞춰 저장됩니다.
- 지금까지 설명한 사람과 제품에 관한 정보를 테이블에 구현하면 다음 그림과 같습니다.

테이블의 구조와 관련 용어.
-
데이터.
- 토마스, 컴퓨터, 2019-07-01과 같이 테이블에 저장된 하나하나의 단편적인 정보를 데이터라고 합니다.
- 즉 정보는 있으나 아직 체계화되지 않은 상태입니다.
-
테이블.
- 회원이나 제품의 데이터를 입력하기 위해 표 형태로 만든 것을 말합니다.
- 위 그림에서는 인터넷 쇼핑몰을 구현하기 위해 회원 정보를 보관할 회원 테이블과 제품 정보를 보관할 제품 테이블을 합쳐서 총 2개의 테이블을 만들었습니다.
-
데이터베이스.
- 테이블이 저장되는 저장소로, 위 그림과 같이 원통 모양으로 표현합니다.
- 위 그림에는 3개의 데이터베이스가 있으며, 각 데이터베이스는 각각의 고유한 이름을 가지고 있습니다.
-
DBMS.
- DataBase Management System의 약자로, 데이터베이스를 관리하는 시스템 또는 소프트웨어를 말합니다.
- 예를 들어 MySQL과 같은 것이 DBMS이다.
- 위 그림에서는 DBMS가 3개의 데이터베이스를 관리하고 있습니다.
-
열(필드).
- 각 테이블은 열(Column)로, 구성됩니다.
- 위 그림의 회원 테이블은 ‘아이디’, ‘회원 이름’, ‘주소’라는 3개의 열로 구성되어 있습니다.
-
데이터 형식.
- 열의 데이터 형식을 말합니다.
- 회원 테이블의 회원 이름 열은 당연히 숫자가 아닌 문자 형식이어야 합니다.
- 또한 제품 테이블의 가격 열은 숫자(특히 정수) 형식이어야 합니다.
- 가격에 ‘고가’같은 글자가 들어가서는 안 되기 때문입니다.
- 데이터 형식은 테이블을 생성할 때 열 이름과 함꼐 지정합니다.
-
행(레코드).
- 실질적인 데이터를 말합니다.
- 회원 테이블의 ‘Thomas/토마스/경기도 부천시 중동’은 하나의 행으로 ‘행 데이터’라고도 부릅니다.
- 행(Row)은 회원 테이블에서 회원이 몇 명인지, 행 데이터가 몇 개 있는지와 동일한 의미입니다.
- 회원 테이블의 행은 4개, 즉 4명의 회원이 존재합니다.
-
기본키(주키).
- 기본키는 각 행을 구분하는 유일한 열을 말합니다.
- 기본키는 중복되면 안 되고 비어 있어서도 안 됩니다.
- 또한 각 테이블에는 기본키가 하나만 지정되어 있어야 합니다.
- 회원 테이블의 기본키는 아이디 열에 지정되어 있는데, 만약 기본키를 회원 이름 열에 지정하면 어떻게 될까요?
- 기본키는 각 행을 구분하는 유일한 열이라고 했는데, ‘토마스’라는 이름만으로 그 사람이 경기도 부천시 중동에 산다는 것을 확신할 수 있나요?
- 만약 ‘토마스’라는 이름이 또 있다면?
- 현실적으로 같은 이름을 가진 사람이 있을 수 있기 때문에 회원 이름 열은 기본키로 지정하기에 부적합합니다.
- 그렇다면 주소 열은 어떨까요?
- 마찬가지로 주소만 가지고 유일한 사람이라고 단정지을 수 없습니다.
- 같은 집에 여러 사람이 살 수도 있기 때문입니다.
- 마지막의 아이디 열은 어떤가요?
- 쇼핑몰 사이트에 가입해봤다면 회원 가입을 할 때 아이디를 만들면서 <아이디 중복="" 확인=""> 버튼을 클릭해본 경험이 있을 것 입니다.아이디>
- 즉 아이디는 중복되지 않게 지정해야 합니다.
- 또한 쇼핑몰 사이트에 회원 가입을 할 때 아이디를 만들지 않고는 가입할 수 없습니다.
- 결국 모든 회원은 아이디를 가지고 있고 모든 회원의 아이디가 각각 다르기 때문에 아이디는 기본키로 지정하기에 매우 적절합니다.
- 한편 회원 테이블에 주민등록번호나 이메일 열이 있다면 역시 중복되지 않고 비어있지도 않으므로 기본키로 지정할 수 있습니다.
-
외래키
- 위 그림에서는 나타나 있지 않지만 외래키는 두 테이블의 관계를 맺어주는 키를 말합니다.
-
SQL(구조화된 질의 언어)
- DBMS에서 어떤 작업을 하고 싶다면 어떻게 해야 할까요?
- 사람끼리 주고 받는 언어로 말할 수는 없습니다.
- DBMS에서 어떤 작업을 하고 싶다면 DBMS가 알아듣는 말로 해야 할 텐데, 이때 사용하는 것이 바로 SQL입니다.
- SQL은 사람과 DBMS가 소통하기 위한 말(언어)입니다.