ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [DATABASE] Intro
    코딩/🟢 DJANGO 2021. 8. 15. 11:11

    Database
    : 데이터를 지정하고 관리하는 시스템

     

     

    우선 데이터 흐름을 보자. (통신흐름은 백엔드관점에서 매우 중요한 요소이다.) 

    스타벅스 사이트를 보자
    백엔드관점에서 볼때, 프론트 엔드에서 화면을 구성하고 그 화면에 맞는 데이터가 없는 상태이다. 

    즉, 메뉴 텍스트 메뉴 이름부터 시작해서 온갖 화면을 구성하고 있는 텍스트 및 숫자, 이미지 영상 등이  없는 상태인 것이다. 

    이러한 정보가 필요한 프론트엔드는 상품 상세 정보를 요청하고 Web application Server는 다시 필요한 정보를 모아둔  Database에 요청한다. 이후 역순차적으로 데이터베이스가 응답을 하고 이를 서버가 프론트엔드에게 응답해주는 구조로 되어있다. 

    필요한 데이터 ( 숫자, 단어, 이미지, 영상 등) 를 요청하고 응답하는 것이 한 세트라고 생각하자. 

    여기서 데이터 베이스란 데이터 그자체를 말하거나 데이터를 관리해주는 시스템을 말한다.  

     

    Database를 사용하는 이유

    1. 데이터를 오랜 기간 저장 및 보관하기 위해서 

         airbnb에서의 숙소정보과 위치정보는 중요한 정보 -> 오랜기간 보존되어 있어야 서비스가 온전하게 실행된다. 

    2. 데이터를 체계적으로 보관하고 관리하기 위해서

         내가 원하는 자료를 쉽게 읽어낼 수 있어야만 의미있는 정보라고 할 수 있다. 
         결국 잘 정리되어 있는 정보가 의미있는 데이터인 것이다. 

     

    그렇다면 어떻게 효율적이고 체계적으로 데이터베이스를 구성할 수 있을까? 

     

    RDBMS ㄷㄷㄷㅈ 
    :관계형 데이터 모델에 기초를 둔 데이터베이스 시스템 

    데이터 테이블은 Column (행→) 과 Row ( 열↓)로 구성되어 있다. 

    Column 에는 id /책 제목/ 작가/ 출판사/ 가격 

    Row 에는 각 항목들의 실제 값이 들어간다. 
                    id =1 : 20대, 너는 어떤 모습으로 살아가고 싶니? 심현아 지식공감 10,800

     

    여기서 주목해야할 것은 각 행은 저만의 id 값 즉 저만의 고유의 키를 가지고 있는데 이를 

    Primary key라고 한다. 

    이를 통해서 특정 행을 찾거나 인용을 할 수 있는 것이 관계형 데이터모델의 핵심이다. 

    인용할 수 있다는 것은 서로 상호 관련성을 가진다는 것이고 서로 연결될 수 있다는 뜻이다. 

     

    관계를 지어서 데이터 테이블을 합친다는 개념이 아니라 

    관계만 만들어 놓고 요청이 들어오면 관계를 파악해서 그때 그때 필요한 데이터를 불러온다고 생각하는 것이 맞다. 

    왜냐하면 데이터를 합치는 개념으로 데이터를 불러오면 필요없는 정보를 계속 불러오는 상황이 발생하기 때문에 비효율적인 통신흐름이다. 

     

    RDBMS 관계유형 
    : One to One / One to Many/ Many to Many 

    데이터에 포함시킬 수 있는 개수를 생각하면서 관계를 생각하자.

     

    1. One to One
    : 일대일 관계

    한 사람이 여러개의 주민등록번호를 가질 수 없음 

    하나의 주민번호로 여러 사람이 사용할 수 없음 

    여기서 user_id가 주민번호테이블과 사용자테이블을 연결하고 있는 건 Foreign Key

    이러한 관계에선 계속 데이터가 세트로 취급받기 때문에 합칠 수도 있다. 

     

    2. One to Many 
    : 일대다 관계

    하나의 A 테이블 데이터는 B 테이블의 여러 데이터와 연결된다. 

    한 사람이 여러 음식을 가질 수 있음 

    그러나 여러 음식은 각자 주인이 있음 

     

    여기서 FK는 user_id 

    값은 주인들의 id 값을 부여하면 된다. 

     

    spss 사용시 명목함수로 지정해주는 것과 같다. 

     

    3. Many to Many
    :다대다 관계

    하나의 A 테이블 데이터는 B 테이블의 여러 데이터와 연결된다.

    한 작가는 여러권의 책을 쓸 수 있음

    한 책에는 여러명의 작가가 쓸 수 있음

     

    윈칙 : 하나의 테이블에는 하나의 책 제목이 들어가야함 두개의 값이 들어가면 안된다.

     

    정규화 원칙에서 벗어난다. 
    따라서 중간테이블을 생성해서 이러한 문제점을 해결 할 수 있다. 

     

     

    원리는 간단하다. 작가와 책을 나눈 뒤 중간테이블에 작가_책 이라는 테이블을 두어 FK로 설정하면된다. 

     

     

    관계형 데이터베이스의 핵심은 FK 

     

    '코딩 > 🟢 DJANGO' 카테고리의 다른 글

    [DJANGO] 인증과 인가(1) : 회원가입 구현하기  (0) 2021.08.26
    [DJANGO] CRUD: POST & GET 로직  (0) 2021.08.22
    [DJANGO] CRUD  (0) 2021.08.20
    [DJANGO] 초기세팅 & Git Github  (0) 2021.08.20
    [DATABASE] 스타벅스 모델링  (0) 2021.08.15
Designed by Tistory.