ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터베이스, MySQL
    Today I Learned 2020. 7. 31. 22:56

    1. 데이터베이스(Database)

    데이터베이스를 간략하게 표현하자면 '정보를 저장하는 애플리케이션'이라 할 수 있다.

    만일 데이터베이스가 없다면? 서버의 '메모리'나 어떤 '파일'에 정보를 저장하게 될 것이다.

     

    1) 서버의 메모리에 저장한다면?

      - 서버를 끄면 데이터가 사라진다는 단점이 있다.

     

    2) 파일에 저장한다면?

      - 상황에 따라 원하는 정보만을 가져올 수 없고, 항상 모든 데이터를 가져온 뒤 서버에서 필터링을 거쳐야 한다.

      - 성능, 보안, 편의성에 있어서 한계를 가지고 있다.

     

    이러한 한계를 극복하기 위해 고안된 전문화된 소프트웨어가 바로 '데이터베이스'다. 데이터베이스의 장점은 데이터를 안전하고, 편리하고, 빠르게 보관하고 사용할 수 있다는 것! 데이터베이스에는 MySql, oracle, MongoDB 등등 다양한 제품들이 있다.

     

    2. 스키마(Schema)

    스키마(schema)는 데이터베이스에서 데이터가 구성되는 방식과 서로 다른 엔티티(테이블) 간의 관계에 대한 설명, 즉 "데이터베이스의 청사진"과 같다.

    아래 그림으로 주어진 예제는 수강신청 시스템의 스키마. 각각의 엔티티(테이블) 간의 관계는 아래와 같다.

    - Teachers 엔티티와 Classes 엔티티가 1:N(one-to-many, "일대 다")

    - Classes 엔티티와 Students 엔티티가 N:N(many to many, "다대 다")

    - Classes 엔티티와 Classes/Students 엔티티(조인 테이블)가 1:N

    - Students 엔티티와 Classes/Students 엔티티(조인 테이블)가 1:N

    예시) 수강신청 시스템의 스키마

    3. SQL

    'Structured Query Language'의 약자. 데이터베이스에 데이터를 저장하거나 얻기 위해서 사용하는 표준화된 언어.

     

    1) Structured : 관계형 데이터베이스는 기본적으로 '표'의 형식으로 정보를 저장하며 정리 정돈하는데, 바로 그런 특징을 보고 '구조화'되었다고 이야기한다.

     

    2) Query : 데이터베이스에게 "데이터를 넣어줘", "조회해줘", "삭제해줘" 등등 이처럼 질의하듯 요청할 수 있는데, 이런 특징 때문에 Query라는 표현이 사용된다(Query = 질문)

     

    3) Language : 데이터베이스도 이해할 수 있고 사용자도 이해할 수 있는 '공통의 약속' 즉, '언어'로 요청해야 데이터베이스 서버가 알아들을 수 있다. 이때 사용되는 언어가 바로 SQL이다.

    4. MySQL

    1) MySQL이 뭔가?

    - 데이터베이스에는 관계형 데이터베이스 외에도 '비 관계형 데이터베이스', '객체형 데이터베이스' 등 다양한 형태의 데이터베이스가 있다. MySQL은 그중 관계형 데이터베이스에 속하는 제품이다.(MySQL 외 다른 제품들로는 MSSQL, ORACLE 등이 있다.)

    - MySQL을 사용하다보면 여러 독립된 테이블이 존재하지만, join과 같은 연산자를 통해 테이블들이 긴밀한 관계를 맺는 경우를 종종 볼 수 있다. 그러한 맥락에서 이런 형태의 데이터베이스를 관계형 데이터베이스라고 한다.

     

    *관계형 데이터베이스에 대한 상세한 설명은 링크 참조.

    관계형 데이터베이스 - 위키백과

     

    2) MySQL의 구조

    MySQL에서 데이터를 기록하는 최종적인 곳은 표(table)다. 어떤 웹사이트를 운영하는 데 사용되는 정보를 데이터베이스에 저장하고 싶다면, '회원정보를 저장하는 표', '게시글을 저장하는 표', '댓글을 저장하는 표' 등등 많은 표(table)를 만들게 된다. 이러한 표가 많아지면 이들을 잘 정리할 필요가 생기는데, MySQL에서는 서로 연관된 표들을 그룹핑해서, 연관되어 있지 않은 표들과 분리하기 위해 사용하는 '폴더'가 있다. 그것을 MySQL에서는 데이터베이스, 다른 말로 스키마(schema)라고 부른다. 즉 '스키마'는 서로 연관된 데이터들을 그룹핑한 것이라고 볼 수 있다.(MySQL에서 말하는 스키마는 데이터베이스와 같은 의미를 가진다. 하지만 다른 데이터베이스 서버에서는 스키마가 다른 의미로 쓰이니 혼동하지 말자) 스키마를 저장하는 곳은 '데이터베이스 서버'라고 한다.

    'Today I Learned' 카테고리의 다른 글

    객체 지향 프로그래밍?  (0) 2020.10.04
    express.Router  (0) 2020.08.01
    React를 통해 Personal Portfolio 만들기 - 스프린트 일지  (0) 2020.07.21
    React 개념정리(1)  (0) 2020.07.19
    Web Architecture(용어 정리)  (0) 2020.07.01

    댓글

Designed by Tistory.