데이터분석 study/데이터베이스

TIL_24.07.16_데이터베이스

justdata 2024. 7. 16. 20:39

▶DBMS

    - 데이터를 체계적으로 저장하고 관리할 수 있게 도와주는 프로그램

    ●사용예시

       - MySQL : 오픈 소스 데이터베이스로 많이 사용됨

       - PostgreSQL: 또 다른 오픈 소스 데이터베이스로 안전성이 높다.

       - Oracle: 기업에서 많이 사용하는 상용 데이터베이스이다.

       - MS SQL Server : 마이크로소프트에서 만든 데이터베이스

 

▶키의 종류

   - 데이터를 고유하게 식별하는 데 사용됨,

      즉, 키를 통해 데이터 베이스 내에서 특정 데이터를 쉽게 찾을 수 있다.

    ● 기본키(Primary key)

        - 테이블에서 각 행(레코드)을 유일하게 식별

        - 중복되지 않으며 NULL 값을 가질 수 없다.

        - 주민번호 처럼 고유한 ID

 

    ● 외래 키 (Foreign Key)

         - 다른 테이블의 기본 키를 참조하는 키

         - 친구의 전화번호를 저장하는 것과 같다. 친구의 전화번호는 친구를 고유하게

            식별하는 정보

 

    ● 후보키(Candidate key)

        - 역할 : 기본 키로 사용할 수 있는 모든키

        - 비유 : 여러 개의 고유한 ID 중에서 하나를 기본 키로 선택하는 것 

           예를 들어, 주민등록번호와 여권 번호가 모두 고유하다면 둘 다 후보키가

            될 수 있다.

 

    ● 대체 키(Alternate Key)

        - 역할 : 기본 키로 선택되지 않은 후보 키

        - 비유 : 주민등록번호가 기본 키로 선택되면 여권번호는 대체 키가 된다.

 

관계의 종류

     - 데이터베이스에서 테이블 간의 관계는 데이터를 더 체계적으로 관리할 수

       있게 해준다. 

      ●1:1 관계

          - 한 테이블의 한 행이 다른 테이블의 한 행과만 연결된다. 

          - ex) 사람과 여권, 한 사람은 하나의 여권만 가진다.

 

      ● 1:N 일대다 관계

           - 한 테이블의 한 행이 다른 테이블의 여러 행과 연결

           

      ● 다대다 (N:M) 관계

           - 여러 행이 여러 행과 연결, 이를 구현하기 위해 중간에 연결테이블 필요

           - ex) 학생과 수업. 한 학생은 여러 수업을 듣고, 한 수업에는 여러 학생이

                    있을 수 있다.

 

▶ 데이터 무결성

    - 데이터의 정확성과 일관성을 유지하는 것 

     - 데이터를 신뢰할 수 있도록 한다.

    ● 참조 무결성 : 외래 키가 참조하는 값이 반드시 존재한다.

          -ex) 주문 테이블의 고객 ID가 고객 테이블에도 존재해야 한다.

 

    ● 도메인 무결성 : 데이터가 정의된 도메인에 속해야 한다.

        - ex) 나이 특성값은 무조건 0 이상이어야 하며, -1 같은 값은 들어갈 수 없다.

 

    ● 엔터티 무결성 : 기본키는 중복되거나 NULL이 될 수 없다.

         - ex) 주민번호와 같은 고유값은 중복이 되어서도 안되고, NULL 값이어도

                  안된다.

 

▶ 제약 조건

     - 제약 조건은 데이터가 특정 규칙을 따르도록 하는 규칙, 제약 조건을 통해 

        데이터의 무결성을 유지

      ● NOT NULL : 해당 필드가 빈 값(NULL)이 될 수 없다.

      ● UNIQUE : 해당 필드의 값이 유일해야 한다.

      ● CHECK : 특정 조건을 만족해야 한다.

      ● DEFAULT : 필드의 기본값을 설정해야 한다.

           

데이터 베이스 설계

  ● 논리적 설계

     - 데이터 모델을 설계하고 ERD를 작성

     - 비유 : 건물의 각 방과 구조를 설계하는 것처럼, 데이터베이스의 각 테이블과

        관계를 설계

 

  ● 물리적 설계

     - 실제 DBMS에서 테이블을 생성하고 인덱스를 설정

     - 비유 : 설계도를 바탕으로 실제 건물을 짓는 것처럼, 논리적 설계를 바탕으로

        실제 데이터베이스를 만든다.

 

정규화

     - 데이터 중복을 최소화하고 데이터를 구조화하는 과정

     - 정규화를 통해 데이터 베이스의 무결성을 유지하고 관리하기 쉽게 만든다.

      1) 1NF(제1정규형)

          - 모든 필드가 원자값을 가진다. 

          - 비유 : 각 상자에 하나의 물건만 넣는 것과 같음, 하나의 필드에는 하나의

                       값만 들어간다.

 

       2) 2NF(제2정규형)

           - 1NF를 만족하고, 부분적 함수 종속을 제거

          - 비유 : 각 상자에 관련된 물건만 넣는 것과 같음, 각 테이블에는 테이블에

                       필요한 데이터만 넣는다.

 

        3) 3NF(제3정규형)

            - 2NF를 만족하고, 이행적 함수 종속을 제거

            - 비유 : 각 상자에 정말 필요한 물건만 넣는 것과 같음, 불필요한 물건을 

                         제거하고, 꼭 필요한 물건만 넣는다.

         

           *** 데이터베이스 설계 시, 정규화를 통해 데이터 중복을 줄이는 것이 

                 중요하지만, 과도한 정규화는 오히려 성능을 저하시킬 수 있기 때문에

                 필요에 따라 정규화를 적절히 적용하는 것이 중요!!! ***

     

트랜잭션(Transaction)

     - 데이터베이스의 상태를 변화시키는 작업의 단위

     - 여러 작업을 하나의 단위로 묶어서 실행 

 

    ● ACID 특성

       1) Atomicity(원자성)

           - 트랜잭션이 완전히 수행되거나 전혀 수행되지 않아야 한다.

           - 은행에서 돈을 이체할 때 돈이 모두 이체되거나 전혀 이체되지 않은 것과 같다.

    

       2) Consistency (일관성)

            - 트랜잭션 후에도 데이터베이스는 일관된 상태를 유지

            - 계산 후 항상 맞아 떨어지는 장부와 같다. 트랜잭션이 끝난 후에도

               데이터 베이스는 항상 올바른 상태를 유지

 

         3) Isolation(격리성)

            - 동시에 실행되는 트랜잭션 간의 간섭을 방지

            - 여러 사람이 동시에 요리를 하지만 서로의 재료에 간섭하지 않는 것

            - 각각의 트랜잭션은 독립적으로 실행

 

          4) Durability(내구성)

             - 트랜잭션이 완료된 후에도 데이터는 영구적으로 저장됨

             - 트랜잭션이 완료된 후에도 데이터는 항상 저장됨

 

인덱스

     - 데이터를 빠르게 검색하기 위한 데이터 구조

     - 인덱스를 사용하면 데이터베이스에서 필요한 데이터를 더 빨리

       찾을 수 있다.

 

     1) B-Tree 인덱스

          - 균형 트리 구조로 해시 인덱스보다 상대적으로 빠르게 데이터를

            찾을 수 있다.

          - 도서관에서 책의 제목 순서로 정리된 카탈로그와 같다.

 

      2) 해시 인덱스

          - 특정값을 기준으로 한 해시 테이블 구조

          - 친구의 이름을 기억하고 전화번호를 바로 찾는 것과 같다.

          - 이름을 해시 키로 사용하여 전화번호를 빠르게 찾을 수 있다.

 

ERD(Entity - Relationship Diagram)

    - 데이터 베이스의 논리적 구조를 시각적으로 표현한 다이어그램

 

    1) 엔터티 (Entity)

       - 데이터를 저장하는 객체

       - 예) 학생, 강의, 교수

 

      2) 속성(Attribute)

          - 엔터티의 특징을 나타내는 필드

          - 예) 학생의 이름, 강의의 이름, 교수의 이름

 

       3) 관계(Relationship)

           - 엔터티 간의 연관성

          - 예) 학생이 강의를 듣고, 교수가 강의를 가르친다.