ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Database(DBMS, RDBMS)
    Database 2022. 10. 24. 19:28

    DATABASE

    1. 데이터베이스(Database)?

    [WHAT]

    - 데이터베이스의 정의 : 데이터베이스란 컴퓨터 시스템에 저장된 정보나 데이터를 모두 모아놓은 집합을 의미한다. 이런 데이터들은 보통 데이터베이스 관리 시스템(DBMS)으로 제어하고 관리한다.

    [WHY]

    이러한 데이터는 왜 데이터베이스에 모아둘까? 비즈니스적 목적이라면 당연히 비즈니스 목적 달성을 위해서이다. 비즈니스 의사결정 등을 하는 여러 사람들이 서로 데이터를 공유하고, 그것을 활용할 목적으로 통합 관리되는 것이다.

     

    엑셀로 관리하면 되지 왜 굳이 “데이터베이스”라는 것을 만들어서 데이터를 저장하느냐?

     

    데이터베이스를 사용하기 이전에는 엑셀 같은 파일 시스템을 사용해서 데이터를 관리했었다고 한다.

    이러면 데이터를 파일 단위로 그룹지어서 업무에 사용할 때 불편한 일들이 발생한다.

     

    예를들어, 마케팅에 활용하기 위해 CRM 데이터를 가지고 고객 성향 데이터를 분석한다고 가정해보자.

    그런데 이 회사는 ERP가 없어, 고객과의 접점에서 발생하는 데이터들을 사람의 손으로 직접 입력하기도 하고

    웹에서 발생하는 여러가지 데이터들을 사람의 손으로 직접 긁어오고 있다.

     

    그러면, 고객의 생애주기 정보와 구매정보, 그리고 그외 웹사이트에서 수집된 세션 데이터들을 통합적으로 분석해야 하는데

    각각의 정보는 서로 다른 곳에서 들어오고 때로는 각각의 정보수집을 여러 다른 사람이 하기도 한다.

    그래서 각각 엑셀 파일이 다르게 저장되어 있다.

     

    사람은 실수를 하기 마련이라, 그리고 작성자도 각각 다를 수 있기 때문에 각 파일별로 row, col이 다르고 중복되는 것들도 있을 것이다.

    그래서 결국에는 이러한 데이터를 한 곳으로 모아 전처리 한 후에 분석이 진행된다.

    그렇다. 데이터베이스를 구축하면 낭비적인 전처리가 필요 없다!

    전처리를 하는 과정은 우리가 사용할 데이터를 선별하여 분석하기 이쁘게 만드는 과정이기도 하지만,

    이것은 동시에 데이터에게 어떠한 속성들을 보장하기 위함이기도 하다.

    데이터의 독립성, 무결성, 종속성 문제들을 처리하는 과정인 것이다.

     

    예시에서 보았듯 결국엔, 우리가 데이터를 분석하는 목적이 “어떤 고객이 구매를 많이 하는가!” 인데

    이것을 분석하기 위한 데이터에 구매 이력이 없거나 데이터상 누락된 고객이 있으면 안되지 않겠는가?

     

    즉, 파일로 데이터를 관리하게 되면 저런 문제들이 아주아주 많이 발생된다.

    결국, 데이터베이스 관리 시스템은 파일 시스템의 문제점을 해결하기 위해 만들어졌다.

     

    데이터베이스 관리 시스템은 하늘에서 뚝 떨어진 것이 아니다. 결국 사람의 필요에 의해 만들어졌음을 잊어서는 안됀다.

    1.1 데이터의 독립성

    - 물리적 독립성 : 데이터베이스의 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다.

    - 논리적 독립성 : 데이터베이스는 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족시킬 수 있다.

    1.2 데이터의 무결성

    여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능으로 데이터의 유효성 검사를 통해 데이터의 무결성을 구현하게 된다.

    1.3 데이터의 보안성

    인가된 사용자들만 데이터베이스나 데이터베이스 내의 자원에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정함으로써 모든 데이터에 보안을 구현할 수 있다.

    1.4 데이터의 일관성

    연관된 정보를 논리적인 구조로 관리함으로써 어떤 하나의 데이터만 변경했을 경우 발생할 수 있는 데이터의 불일치성을 배제할 수 있다.

    또한 작업 중 일부 데이터만 변겨오디어 나머지 데이터와 일치하지 않는 경우의 수를 배제할 수 있다.

    1.5 데이터 중복 최소화

    데이터베이스는 데이터를 통합해서 관리함으로써 파일 시스템의 단점 중 하나인 자료의 중복과 중복성 문제를 해결할 수 있다.

     

    2. 관계형 데이터베이스 (RDBMS)가 무엇이며, 왜 사용하는지 이해합니다.

    [WHAT]

    - 정의 : 데이터 사이의 관계에 기초를 둔 데이터베이스 시스템

    [WHY]

    - 모든 데이터를 하나의 테이블에 모아두면 데이터를 관리가 어렵다. 모든 데이터가 한 곳에서 오는 것이 아니라면 중복 데이터가 같이 들어올 수도 있고 더 많은 디스크를 사용하게 된다. 그리고 그 데이터를 활용하는 것 까지 고려해본다면, 데이터 존재 목적에 따라 테이블로 묶어 두면 관리, 활용이 편리하다.

    Database가 아니라 서버에 데이터를 저장하면 안될까 ? 서버에서도 저장할 수 있지만 DBMS만큼 효율적으로 관리하기가 쉽지않음. 회사에서 데이터는 여러 서비스에 걸쳐 사용될 확률이 매우 높은데, 각 서버가 데이터를 모두 가지고 있다면 서버마다 다른 데이터를 가지게 되어 문제가 생길 수 있음. 따라서 데이터를 한 곳에 저장하여 관리하여야 함.

     

    3. 테이블(Table), Column, Row

    테이블이란 데이터베이스에서 행과 열로 짜여진 표에 기록된 데이터의 집합이다. 관계형 데이터베이스에서 열(column)은 테이블의 속성을 나타내고 그 중 테이블의 정체성을 드러내는 열이 키(Key)가 된다. 행(Row)은 튜플(실제 값, 속성의 집합)을 나타낸다. 그리고 각 행은 고유한 기본키를 가진다.

     

    3.1 테이블(Table)의 관계 - One to One, One to Many, Many to Many

    - One to One

    이름과 주민번호의 관계! One 과 One은 1:1 대응된다.

    - One to Many

    아이스 아메리카노는 아메리카노지만 아메리카노는 아이스 아메리카노가 아니다! 아메리카노에는 핫 아메리카노도 있고 헤이즐넛 아메리카노도 있고! 즉, One은 Many의 부분집합.

    - Many to Many

    이 작가는 여러가지 책을 쓸 수 있지만 어떤 책 또한 저자가 여러명일 수 있다! 교집합 관계라고 봐도 될 듯.

     

    3.2 Primary Key 와 Foreign Key 의 관계를 설명하고, 테이블에 지정할 수 있습니다.

    - Primary Key는 기본키를 의미하고, 모든 행의 고유키가 된다. Foreign Key는 테이블이 참조하고 있는 다른 테이블의 기본키를 의미한다.

     

    4. 데이터베이스 정규화

    - 정규화의 정의 : 테이블간에 중복된 데이터를 없애는 것. 중복된 데이터를 허용하지 않음으로써 무결성을 유지할 수 있으며 DB의 저장 용량 역시 줄일 수 있다. 이러한 테이블을 분해하는 정규화 단계가 정의되어 있다.

     

    [기본개념] 

    - 튜플(Tuple) : 튜플은 릴레이션을 구성하는 각각의 행을 말하며 속성의 모임으로 구성된다. 파일 구조에서 레코드와 같은 의미이다. 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고 한다.

    - 속성(Attribute) : 속성은 데이터베이스를 구성하는 가장 작은 논리적 단위이며, 개체의 특성을 기술한다. 파일 구조상의 데이터 항목 또는 데이터 필드에 해당한다. 속성의 수를 디그리(Degree) 또는 차수라고 한다.

    - 도메인(Domain) : 도메인은 하나의 속성이 취할 수 있는 같은 타입으 ㅣ원자값들의 집합이다. 도메인은 실제 속성 값이 나타날 때 그 값의 합법 여부를 시스템이 검사하는데에도 이용된다.

    - 키(Key) : 키는 데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 튜플들을 서로 구분할 수 있는 기준이 되는 어트리뷰트(속성, column)를 말한다.

    - 후보키 (Candidate Key) : 후보키는 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기폰키로 사용할 수 있는 속성들을 말한다.

    - 기본키 (Primary Key) : 기본키는 후보키 중에서 선택한 주 키(Main Key)이다.

    - 대체키 (Alternate Key) : 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말한다.

    - 슈퍼키 (Super Key) : 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값을 나타나지 않는다.

    - 외래키 (Foregin Key) : 관계를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성을 외래키라고 한다.

     

    [제 1 정규화] 도메인 원자값

    제 1 정규화란 테이블의 컬럼이 원자값(Atomic Value, 하나의 값)을 갖도록 테이블을 분해하는 것이다.

    반복 그룹이 존재하면 안된다.

    모든 행은 식별자로 완전하게 구분되어야 한다.

    [제 2 정규화] 부분적 함수 종속 제거

    제 2 정규화란 제 1 정규화를 진행한 테이블에 대해 완전 함수 종속을 만족하도록 테이블을 분해하는 것이다. 여기서 완전 함수 종속이라는 것은 기본키의 부분집합이 결정자가 되어선 안된다는 것을 의미한다. 즉, Key가 아닌 값들은 모두 key에 종속 되어야 한다는 말입니다. → key가 아닌 컬럼(속성)은 key 컬럼에만 종속적이어야 한다. 그래서 복합키일 때만 제 2 정규형의 조건이 된다.

    [제 3 정규화] 이행적 함수 종속 제거

    제 3 정규화란 제 2 정규화를 진행한 테이블에 대해 이행적 종속을 없애도록 테이블을 분해하는 것이다. 여기서 이행적 종속이라는 것은 A→B, B→C가 성립할 때 A→C가 성립되는 것을 의미한다.

     

    [BCNF 정규화] 결정자이면서 후보키가 아닌 것 제거

    BCNF 정규화란 제 3 정규화를 진행한 테이블에 대해 모든 결정자가 후보키가 되도록 테이블을 분해하는 것이다.

    [제 4 정규화] 다치 종속 제거, [제 5 정규화] 조인 종속성 이용

    -> 보통 BCNF 정규화까지 가면 데이터 정제가 잘 된 상태가 된다고 한다. 그래서 일단 4~5 정규화는 학습하지 않았다. 그리고 사실 정규화에 대해 완벽히 이해하지 못했다. 추후에 필요한 부분이 있다면 추가 학습할 계획이다.

     

    - 정규화 참고자료

    https://mr-dan.tistory.com/10

    https://mr-dan.tistory.com/10

    'Database' 카테고리의 다른 글

    SQL Query - SELECT  (1) 2023.05.17
    SQL Command(insert, update, delete statemant)  (0) 2023.05.11
    SQL 기본  (0) 2023.04.25
    Relational data model & Relational database  (0) 2023.04.15
    Database 기본 개념  (0) 2023.04.12

    댓글