JonghoonAn
어제보다 하나 더
JonghoonAn
전체 방문자
오늘
어제
  • 분류 전체보기
    • 알고리즘
    • 프로젝트
    • 배운점
    • ML
    • 학교 공부
      • OS
      • 네트워크
      • 시스템 프로그래밍
      • 데이터베이스
      • 소프트웨어 분석 및 설계

블로그 메뉴

  • 홈
  • 알고리즘
  • 배운점
  • 학교 공부
  • 머신러닝

공지사항

인기 글

태그

  • cs231n
  • 인공지능
  • Transfer learning
  • 가중치 초기화
  • recurrent network
  • 활성화 함수
  • 합성곱
  • 인공지능 학습
  • lecture7
  • rnn
  • lecture9
  • lecture6
  • pooling
  • 전이 학습
  • convolutional layer
  • Learning rate
  • neural network
  • lecture10
  • ConvNets
  • Backpropagation
  • 학습률
  • CNN Architecture
  • 인공신경망
  • 역전파
  • activation function
  • conv
  • 인공 신경망
  • CS231
  • convolutional network
  • convolutional neural network

최근 댓글

최근 글

티스토리

JonghoonAn

어제보다 하나 더

RDBMS의 정의, 외래키, 스키마 정의
학교 공부/데이터베이스

RDBMS의 정의, 외래키, 스키마 정의

2021. 4. 14. 16:41

1. RDBMS의 정의

a. RDBMS (Relational DataBase Management System)란?

   RDB를 관리하는 DBMS

 

b. DBMS란?

   데이터베이스들의 데이터를 CRUD하는, 그 중에서도 Retrieve(read)에 최적화 된 시스템

 

c. RDB (Relational DataBase)란?

   관계형 데이터 모델에 기초를 둔 데이터 베이스

 

d. 데이터베이스란?

   여러 개의 테이블을 묶어서 관리되는 데이터 집합

 

2. RDBMS에서의 관계란?

RDBMS는 테이블 기반(Table based)으로 데이터를 저장, 관리하는 시스템인데, 일반 DBMS와는 구별하는 특징으론 개체에 특성에 따라 각 테이블(Relation)을 나누고 나눈 테이블 간의 관계를 정의하는 방식의 DBMS이다.

 

여기서 관계(Relation)는 동일한 구조로 이루어진 튜플(레코드)의 집합으로, 테이블과 유사하다. 하지만 일반적인 테이블들 중에서도, 모든 열이 그 개체들의 특성에 대한 데이터를 저장할 때 이를 Relation이라고 표현한다.

 

이렇게 나눈 Relation간의 관계를 나타내기 위해서 외래키라는 공통 컬럼을 갖는다.

 

3. 외래키

a. 외래키의 정의

테이블간의 연결을 정의하는 키로, 다른 테이블의 기본키가 해당 테이블에 존재할 때 그 컬럼을 외래키라고 한다.

FK가 PK인 경우를 식별관계(Identifying Relationship)이라고 부르고, FK가 일반 컬럼인 경우를 비식별관계(Non-Identifying Relationship)이라고 부른다.

이렇게 정의된 관계를 이용하여 테이블 간 조인(Join)을 할 수 있다,

 

b. 외래키를 활용한 조인

테이블이 여러개로 나누어진 상태에서 원하는 데이터를 찾으려면 두가지 방식이 있다.

 

1. 하나의 테이블에서 원하는 레코드를 검색하고, 그 레코드를 참조하여 다른 레코드를 검색하여 최종 결과를 산출하는 방식

2. 테이블간의 병합으로, 원하는 레코드를 한번에 찾는 방식

 

후자의 경우가 더 효율적이라고 한다.

 

주의해야할 점은 이 조인은 레코드 단위 연산이 아닌 테이블 단위 연산이라는 점이다. 즉, 1개를 찾고싶다고 해서 각 테이블에서 레코드를 하나씩 빼와서 조인할 수 없다는 얘기이다.

이 조인 과정에서는 테이블 간의 공통컬럼이 존재해야하는데, 이 공통컬럼이 위에서 확인한 외래키인것이다.

 

3. RDBMS의 스키마 정의

그렇다면 이 구조를 어떻게 정의할까?

모델링으로 DB스키마를 만들고 정규화로 업데이트 시켜준다.

 

모델링 : DB스키마를 만드는 작업으로 개념모델링/논리모델링/물리 모델링으로 나뉜다.

 

정규화 : DB스키마는 가변적이다. CUD과정에서 발생할 수 있는 이상현상을 제거하기 위해 설계를 재구성할때 사용하는 방식

어떠한 이상현상이 존재할까?

1. Insert : 만약 학생이 아무 과목도 수강하지 않는다고 하면, Subject_opted 컬럼에는 NULL이 들어갈 것입니다.

2. Update : Adam의 Address가 변경되었을 때, 여러줄의 데이터를 갱신해야합니다. 이로인해 데이터의 불일치(inconsistency)가 발생할 수 있습니다.

3. Deletion : 만약 Alex 학생이 과목 수강을 취소한다면 Alex의 레코드가 아예 테이블에서 지워져버립니다.


이러한 이상현상을 제거하기 위해서 1,2,3차 정규화, BCNF, 4,5차 정규화로 나눌 수 있는데 결과적으로는 테이블이 여러개로 나누어지고 나누어진 테이블에 관계를 정의해주어 이런 이상현상을 제거할 수 있다.

 

간단하게 각 스텝에 대해서 정리해보면

1차에는 모든 레코드에 대해서 각 컬럼엔 하나의 값만 갖게 하고, 2차에선 테이블을 나누어 모든 컬럼이 완전 함수적 종속을 만족시키게 하고, 3차에선 테이블을 나누어 컬럼 간 종속을 없애고, BCNF에서는 테이블을 나누어 일반 컬럼이 후보키를 결정하는 경우를 없앤다.

 

자세한 내용은 아래를 참고, 정규화에 대한 내용이 정말 잘 설명되어 있는것 같으니 참고하자!

3months.tistory.com/193

 

데이터베이스 정규화 1NF, 2NF, 3NF, BCNF

데이터베이스 정규화 1NF, 2NF, 3NF, BCNF 데이터베이스 정규화란 데이터베이스의 설계를 재구성하는 테크닉입니다. 정규화를 통해 불필요한 데이터(redundancy)를 없앨 수 있고, 삽입/갱신/삭제 시 발

3months.tistory.com

한줄로 정리해보자면 불필요한 데이터를 삭제하고 이상현상을 제거하며 논리적인 데이터 저장구조를 가지도록 명확히 스키마를 정의하는것이 정규화인 것이다.

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'학교 공부 > 데이터베이스' 카테고리의 다른 글

오라클의 조인 타입 / 표준 조인과 비표준 조인의 차이점  (0) 2021.05.05
1.트랜잭션의 4대 특징, ACID  (2) 2021.05.05
DB 인덱스와 Join  (0) 2021.04.15
RDBMS의 연산과 키  (0) 2021.04.15
정형 / 반정형 / 비정형 데이터란?  (0) 2021.04.14
    '학교 공부/데이터베이스' 카테고리의 다른 글
    • 1.트랜잭션의 4대 특징, ACID
    • DB 인덱스와 Join
    • RDBMS의 연산과 키
    • 정형 / 반정형 / 비정형 데이터란?
    JonghoonAn
    JonghoonAn
    https://github.com/jjong0225 숭실대 소프트
    hELLO. 티스토리 스킨을 소개합니다.
    제일 위로

    티스토리툴바