0부터 시작하는 Maria DB 공부 - 데이터 베이스 모델링 실습

Jaehong Lee·2022년 7월 14일
1
post-thumbnail

1. 데이터 베이스 모델링 도구 설치

p.114

  • 해당 링크를 쳐서 모델링 도구를 다운 받자
  • 파일을 실행하자
  • 전부 NEXT하여 설치하면 된다

2. 데이터 베이스 모델링과 모델링 기호

p.104

  • 데이터 베이스 모델링은 크게 3단계를 거친다

    • 개념적 모델링 : 업무 분석 단계
    • 논리적 모델링 : 업무 분석의 후반부와 시스템 설계의 전반부
    • 물리적 모델링 : 시스템 설계의 후반부
    • 이 분류가 절대적인 것은 아니다
  • 모델링 기호

    • 실선 : 부모 테이블의 PK가 자식 테이블의 PK가 되는 경우
    • 점선 : 부모 테이블의 PK가 자식 테이블의 일반 속성이 되는 경우로 부모 테이블에 DATA가 없어도 자식 테이블에 DATA가 생길 수 있다
    • 즉, 실선은 로그인하고 제품 구매하기, 점선은 비 로그인하고 제품 구매 같은 느낌이다

  • 1대1, 1대N ( 단, N은 무조건 2개 이상 ) , 1대N ( 단, N은 무조건 1개 이상) 관계를 의미한다

  • 0 OR 1 , N이 0개 이상을 의미한다

3. 데이터 베이스 모델링 실습

p.115

  • 설치한 프로그램을 켜주자
  • 다음과 같이 설정하자. Database는 기본으로 설정한다
  • File/new/database diagram을 클릭해서 diagram을 생성해준다
  • DB를 끌어서 놓으면 diagram이 자동으로 생긴다
  • 도장 아이콘을 통해 정보창을 생성한다
  • 새 DB를 만들자
  • 다음과 같이 설정한다
  • 우클릭/NEW/TABLE을 통해 TABLE을 생성하자
  • 다음과 같이 설정하며, username을 pk로 사용한다. mobile 외에는 모두 필수 정보이므로 Not Null을 체크한다
  • 잘 생성이 됬다. 제약조건은 PRIMARY 키를 사용한다
  • 더블 클릭하면 PRIMARY 키에 대한 정보가 나온다
  • 다음은 이 user 테이블을 참조하는 보조 테이블을 만든다. username을 통해 참조할 것이므로, 보조 테이블의 FK인 username은 주 테이블의 username과 설정이 같아야한다
  • 두 테이블을 연결해보자. 아이콘을 누르고 buytbl의 username을 클릭한 상태로 usertbl의 username까지 끌고오면 다음과 같은 창이 생긴다. 연결할 Column끼리 이어주면 된다
  • 다음과 같이 확인 가능하다. 이는 1대N ( 0이상 ) 이 된다
  • 다음과 같이 DB가 잘 생성된 것을 확인할 수 있다
  • Heidi SQL에서도 확인 가능하다
  • buytbl에 행 삽입을 통해 DATA를 입력하려고 해도, buytbl은 usertbl에 DATA가 있어야 DATA가 저장되기에 입력이 안된다
  • user를 추가해준다
  • 이제 buytbl에 입력이 된다. username은 usertbl의 username을 참조하므로, 홍길동을 선택해준다
  • linux에서도 생성한 DATA를 잘 확인할 수 있다
  • Query문을 작성할 때, USE ' 사용할 DB ' + from ' 사용할 TABLE ' 을 사용해도 되고, from ' 사용할 DB ' . ' 사용할 TABLE ' 을 사용해도 된다

4. Instance DB를 모델링 해보자

  • 시나리오

    • 간단한 클라우드 공간에서 필요한 인스턴스 만들기
    • 사용자 테이블

      id ( 사용자별로 동일해서는 안된다 ) , password, name, addr, 휴대폰 번호

    • Host 테이블 ( 인스턴스가 배치되는 물리 서버 )

      hostname ( seoul_zone_a_rack13_001 ) , hostip, cpu, ram_size

    • 인스턴스

      instancename, id ( 사용자 id ) , hostname ( 인스턴스가 배치되는 물리 서버의 이름 ) , flavor ( m1.small , m1.micro ... ) , instanceip ( 사설 Ip )

  • Cloud 서비스 환경

    • 인스턴스에 대한 정보가 테이블에 저장될 때 인스턴스에 대한 ID는 서비스해주는 서버에서 정해준다. 이 정보에는 어디 ZONE인지, 어디 SERVER인지, 어느 IP인지, CPU / RAM / DISK는 얼마나 사용하는지가 들어있으며 인스턴스 생성시 자동으로 DB에 저장된다
    • 인스턴스의 이름은 중복되면 안되며, PK로 사용된다
    • TABLE 관계는 다음과 같이 될 것이다
    • Cloud의 DB에는 다양한 Table이 있다

  • diagram을 새로 생성해서 instance Table을 생성한다. Column 설정은 다음과 같이 한다
  • 전부 null을 허용하지 않으며, instancename이 PK다. PK 설정을 하면 Not Null 설정과 무관하게 무조건 null을 허용하지 않는다. 즉, 자동으로 Not Null 설정이 된다
  • user Table도 생성한다
  • host Table도 생성한다
  • 관계를 연결해준다. 연결할 때, FK를 연결할 PK로 끌어가자. 아니면 error가 발생하기 때문에 순서를 꼭 지키자
  • Heidi SQL에서도 잘 확인된다

5. 실습을 위한 DB 생성

  • 실습을 위한 DB를 만들고, DATA를 저장하자

  • 코드는 다음과 같다. 테이블 이름에 대소문자를 잘 구별하자

  • 외부 네트워크에서 MariaDB 서버를 관리하는 방법은 p.150을 참고하자

profile
멋진 엔지니어가 될 때까지

0개의 댓글