DB설계에서 가장 중요한 것은 "분석"이다.
내가 구현할 시스템이 무엇인지 정확하게 파악하고 이에 따른 DB설계가 이뤄져야 한다.
만약, DB설계가 제대로 되어 있지 않은 상태에서 시스템이 구현된다면,
향후 사소한 문제로 인해 DB를 수정할때 어렵게 해결해야만 하는 문제점이 생긴다.
이에 DB설계는 많은 생각과 디테일을 요구한다.
- 보드를 구독하려면 아이디,구독여부가 있어야합니다.
- 유저는 여러 보드를 구독할 수 있습니다.
- 보드를 구독했다면 글작성, 댓글작성, 좋아요 뿐만 아니라 여러 부가기능을 사용할 수 있습니다.
- 유저는 또한 여러 글, 댓글을 작성할 수 있습니다.
- 보드에 대한 정보 보드설명, 보드추가기능여부를 저장하고 있습니다.
- 유저에 대한 정보 아이디,실명, 비밀번호, 구독여부를 가지고 있습니다.
- 글에 대한 정보 아이디,글내용,글쓴날짜,어떤 보드에 해당하는 지 가지고 있습니다.
- Roach 마트에 가입하려면 고객은 회원아이디, 비밀번호, 나이, 직업을 입력해야한다.
- 가입한 회원에게는 등급과 적립금이 부여된다.
- 회원은 회원아이디로 식별한다.
- 상품에 대한 상품번호, 상품명, 재고량, 단가정보를 유지해야 한다.
- 상품은 상품번호로 식별한다.
- 회원은 여러 상품을 주문할 수 있고, 하나의 상품을 여러 회원이 주문할 수 있다.
- 회원이 상품을 주문하면 주문에 대한 주문번호, 주문수량, 배송지, 주문일자 정보를 유지해야 한다.
- 각 상품은 한 제조업체가 공급하고, 제조업체 하나는 여러 상품을 공급할 수 있다.
- 제조업체가 상품을 공급하면 공급일자와 공급량 정보를 유지해야 한다.
- 제조업체에 대한 제조업체명, 전화번호, 위치, 담당자 정보를 유지해야 한다.
- 제조업체는 제조업체명으로 식별한다.
- 회원은 게시글을 여러개 작성할 수 있고, 게시글 하나는 한 명의 회원만 작성할 수 있다.
- 게시글에 대한 글번호, 글제목, 글내용, 작성일자 정보를 유지해야 한다.
- 게시글은 글 번호로 식별한다.
- 회원이 상품을 구매한다.
- 회원은 상품을 카트(장바구니)에 담을 수 있다.
- 회원정보: 회원아이디, 비밀번호, 성명, 주소, 연락처
- 상품: 상품아이디, 상품명, 이미지, 가격
- 회원이 요구하는 배송지에 배송을 지원한다.
- 회원은 0또는 1곳 이상의 배송지를 등록할 수 있다.
- 배송지: 배송지 아이디, 회원아이디, 우편번호, 연락처, 주소, 기본배송지등록여부
- 회원은 구매하기 위해 상품을 카트에 담는다.
- 카트(장바구니) 회원아이디, 상품아이디, 수량, 금액, 날짜
- 회원은 구매시 신용카드로 구매한다.
- 신용카드: 신용카드 아이디, 회원 아이디, 카드사, 카드번호, 유효기간
- 회원은 0또는 1장 이상의 신용카드를 등록한다.
- 주문: 회원아이디, 주문 일자, 상품명, 수량, 금액, 배송지 아이디, 카드 아이디
- 교수(Professor)는 아이디(ssn), 이름(name), 나이(age), 직위(rank), 연구 분야(speciality)를 가진다.
- 학과(Department)에는 학과번호(dno), 학과이름(dname), 학과사무실(office)이있다.
- 대학원생(Graduate)은 아이디(ssn), 이름(name), 나이(age), 학위과정(deg_prog, 석사/박사)을 가진다.
- 과제(Project)는 과제번호(pid), 지원기관(sponsor), 개시일(start_date), 종료일(end_date), 예산액 (budget)이있다.
- 학과마다그 학과를 운영(run)하는 교수(학과장이라고 한다)가 한명씩 있다.
- 한 교수가 여러학과에서 근무(work-dept)할 수 있는데, 이때각 학과별로 참여백분율(pct_time)이 기록된다.
- 대학원생에게는 학위 과정을 밟을 전공학과(major)가하나씩 있다.
- 대학원생에게는 어떤과목을 들으면좋을지 조언(advisor)해주는 선임대학원생(학생조언자라고 한다)이있다.
- 과제는 한 교수(연구책임자라고 한다)에의해 관리(manage)된다.
- 과제는 한 사람이상의 교수(공동연구책임자라고 한다)에의해 수행(work-in)된다.
- 한 과제는 한 명이상의 대학원생(연구조교라고 한다)에의해 수행(work-prog)된다.
1~4번은 개체와 속성을 연결해주는 부분이다.
5~11번은 관계로 개체들을 연결해주는 부분이다.
- 한빛 항공사에 회원으로 가입하려면 회원아이디, 비밀번호, 성명, 신용카드 정보를 입력해야 한다
- 회원의 신용카드 정보는 여러 개를 저장할 수 있는데, 세부적으로는 신용카드번호, 유효기간을 저장할 수 있다
- 한빛 항공사에서는 보유한 비행기에 대해 비행기번호, 출발날짜, 출발시간 정보를 저장하고 있다
- 한빛 항공사에서는 좌석에 대한 좌석번호, 등급 정보를 저장하고 있다
회원은 좌석을 예약하는데, 회원 한 명은 좌석을 하나만 예약할 수 있고, 한 좌석은 회원 한명만 예약할 수 있다- 비행기에는 좌석이 존재하는데, 비행기 하나에는 좌석이 여러 개 존재할 수 있고
- 한 좌석은 반드시 하나의 비행기에만 존재해야 한다.
- 좌석은 비행기가 없으면 의미가 없다.
다양한 예시를 참고하여 내가 만들고자 하는 DB설계에 적절한 요구사항을 도출해보자.
요구사항 분석을 마치면, 요구사항내 존재하는 개체(Entity)와 속성(Attribute)을 추출하는 단계로 넘어간다.
끝.
출처: