DATABASE // MYSQL(1)

2022. 2. 11. 19:50
  • mysql강좌를 들으면서 약간 헷갈린다거나 기억해두면 좋겠다는 부분을 정리
    • DataBase(DB와 DBMS)
    • RDBMS

 

DB와 DBMS

  • DB : 우리가 사용하는 정보의 총 모음집
  • DBMS(Database Management System) : 데이터베이스 관리 시스템. 일반적으로 DB를 다룬다고 하면 DBMS를 다루는 것임(ex : mysql,oracel..)
    • DBMS는 (많은양의)데이터를 장기관 저장하여 보존할 수 있게 한다. 별것 아닌 당연한 내용 같지만, 메모리의 데이터가 금방 날아가버리는 것을 생각하면, 대용량의 데이터를 보존하는 것은 꽤 의미가 크다
    • RDBMS의 경우, 데이터간의 관계를 설정하여 정보를 체계적으로 관리할 수 있다.
  • 추가)DB와 DBMS사이의 관계에 대해 듣던 중, OS를 활용한 비유가 꽤 좋아서 같이 남김
    • OS는 하드웨어와 사람사이에 존재하며 사람의 클릭이 하드웨어의 기능수행으로 이어질 수 있게 한다. DB(데이터)와 DBMS의 관계도 비슷하다. 사람으로 하여금 데이터에 대한 작업을 쉽게 수행할 수 있게 하는 것이 DBMS!

 

RDBMS

  • 관계형 DBMS, 즉 데이터들을 관계지어서 다루는 DBMS
  • 모든 데이터는 2차원(column * row)으로 표현되며, 한 행의 데이터는 자신을 나타낼 수 있는 고유한 값인 PK(primary_key)를 가지고 있음
    • column(열) : 데이터의 속성(id, 책제목, 책가격..)
    • row(행) : 실제 데이터(1, "갈매기의 꿈",24000...)
    • primary_key : 데이터를 나타내는 고유값. pk를 이용해 특정값을 찾거나 인용, 혹은 다른 테이블과 관계를 맺을 수 있음
  • DB를 구성하고 있는 모든 테이블들이 PK를 기준으로 관계를 맺으며, 이때 기준이 되는 PK를 FK(Foreign_key)라고 한다.
    • A테이블과 B테이블이 엮인다면, A테이블이 B테이블의 pk를 A테이블의 FK로 가지고 있을 수 있다.
    • 팁)RDBMS의 테이블을 만들 때, FK를 가지고 있지 않은 테이블부터 만드는게 좋다

 

 

 

테이블간의 관계 ( 1:1 , 1:M , M:M)

  • 일대일(one to one) : 일대일 면접. 주민등록번호와 유저리스트 . 사실상 언제든 한테이블로 합쳐질 수 있다
    • 합쳐질 수 있는 다른 테이블의 pk를 , one to one으로 관계지어지는 테이블의 pk이자 fk로 쓰려는 생각을 해볼 수 있다.
    • 그러나 테이블이 분리되어 있다면, 가능하면 테이블별로 pk를 만들어주는 것이 좋다. pk가 다른 것에 의존되지 않는 것이 좋음
    • 특히 on_delete속성을 고려하면 테이블별로 pk를 만들어 주는게 좋다(
      • on_delete : FK로 맺어진 테이블의 특정행이 삭제되었을 경우 연관된 다른 테이블의 행을 어떻게 처리할 것인지에 관함
  • 일대다(one to many) :
    • '한명의 면접관이 여러명의 학생들에게 질문할 수 있는 일대다 면접'같은 느낌
    • 일대다 관계에서 FK는 반드시 다(Many)쪽에 있어야 함. 사실 안그러면 애초에 안만들어짐(해보면 암)
    • 착각하기 쉬운 부분
      • 수강과목같은 건, 오히려 M to M이다. 한 학생이 여러개의 과목 수강 & 한 과목을 여러명이 수강
      • 장바구니는 제품의 관점으로 보면 M to M에 가깝고, 장바구니와 손님과의 관계로 보면 오히려 one to one이다.
  • 다대다(Many to Many)
    • 면접관도 여러명, 학생도 여러명 > 한명의 면접관이 여러명의 학생들한테 질문이 가능하고, 한명의 학생이 여러명의 면접관들에게 질문받을 수 있음
    • M to M관계에서는 서로 다른 두 테이블에 속한 데이터들의 조합이 다양하게 만들어질 수 있음
      • 따라서 이러한 조합을 입력하기 위한 중간 테이블이 생성됨 
      • 중간 테이블은 양쪽 테이블의 pk를 fk로 가지고 있음(즉 fk가 두개이다) 물론 fk외에도 추가정보를 넣을 수는 있다. 다만 양쪽 테이블의 fk가 필수라는 것 ex) A제품 & small 사이즈의 재고량에 관한 경우

 

  • one to one관계에서는 다른 테이블의 pk를 자신 테이블의 fk이자 pk로 사용하는 것은 좋지 않다. > 자신테이블의 pk가 다른 테이블에 묶이는 것이 좋지 않다.(on_delete속성)

 

drink와 allergy가 M to M 관계 >> 중간테이블인 drink_allergy. drink와 allergy의 pk를 fk로 가지고 있다.

 

 

팁)

  •  
  •  

 

 

'mysql' 카테고리의 다른 글

WSL & UBUNTU : MYSQL 설치  (0) 2022.04.07
INDEX, TRANSACTION, 권한부여 // MYSQL(2-2)  (0) 2022.02.11
기본키&고유키&외래키, 뷰 // MYSQL(2-1)  (0) 2022.02.11

BELATED ARTICLES

more