DBMS / 외래키 / 정규화

Previous Next

TL;DR




데이터베이스 DB

데이터베이스가 존재하기 이전에는 파일 시스템을 이용해 데이터를 관리했는데, 어플리케이션 별로 데이터를 관리하게 되면 데이터 종속성, 중복성, 무결성 문제가 있었다.


데이터베이스 특징

  1. 데이터의 독립성
    • 물리적 독립성 : 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다.
    • 논리적 독립성 : 데이터베이스는 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족시켜줄 수 있다.
  2. 데이터의 무결성 여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능으로 데이터의 유효성 검사를 통해 데이터의 무결성을 구현하게 된다.
  3. 데이터의 보안성 인가된 사용자들만 데이터베이스나 데이터베이스 내의 자원에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정함으로써 모든 데이터에 보안을 구현할 수 있다.
  4. 데이터의 일관성 연관된 정보를 논리적인 구조로 관리함으로써 어떤 하나의 데이터만 변경했을 경우 발생할 수 있는 데이터의 불일치성을 배제할 수 있다. 또한 작업 중 일부 데이터만 변경되어 나머지 데이터와 일치하지 않는 경우의 수를 배제할 수 있다.
  5. 데이터 중복 최소화 데이터베이스는 데이터를 통합해서 관리함으로써 파일 시스템의 단점 중 하나인 자료의 중복과 데이터의 중복성 문제를 해결할 수 있다.



DBMS


DBMS 종류



관계형 DBMS

테이블 구조

테이블구조



키(Key)

키

👆 여기서 용어정리

유일성 : 키로 튜플을 유일하게 식별할 수 있음

최소성 : 튜블을 구분하는데 꼭 필요한 속성들로만 구성



정규화


장단점



정규형

각각의 정규형은 다음을 만족해야 한다.

제 1정규형(1NF)


제 2정규형(2NF)

👆완전 함수 종속?

어떤 속성이 기본키에 대해 완전히 종속일 때

👆부분 함수 종속?

어떤 속성이 기본키가 아닌 다른 속성에 종속되거나, 기본키가 여러 속성으로 구성되어 있을 때 기본키를 구성하는 속성 중 일부만 종속될 때.


제 3정규형(3NF)

👆이행 종속성?

A → B , B → C 인 경우 A → C 가 성립될 때.

즉, A를 알면 B를 알고 그를 통해 C를 알 수 있는 경우를 의미


BCNF 정규형




질문

데이터베이스는 왜 사용하게 됐나요?


그럼 데이터베이스는 어떤 특징을 갖고 설계되어야 할까요?


정규화는 왜 하는 건가요?


역정규화란?


제1 정규형도 2정규형도 3정규형도 모두 이상현상이 발생하는데 왜 하는걸까요?


데이터가 자주 변경될 때는 왜 RDBMS를 사용하는게 좋은가?

NoSQL은 데이터를 분산 저장하기 때문에 update가 생길 시 실시간으로 전파하기 어렵기 때문입니다.


언제 NoSQL을 사용하면 좋을까요?




References