본문 바로가기
부트캠프 개발일기/Database

33일차: 데이터베이스 설계 및 SQL 심화

by shyun00 2023. 3. 30.

❯ 데이터베이스 설계

관계형 데이터베이스의 설계에서 중복이 최소화 되도록 데이터를 구조화하는것을 정규화(Nomalization) 이라고 한다.

크게 아래 세가지를 고려하여 설계하여야 한다.

  • Data Redundancy(데이터 중복) : 동일한 데이터가 여러곳에 중복되어 위치하는 현상을 말한다.
          동일한 데이터가 중복되어있을경우 저장 공간이 낭비되며 데이터 효율성이 감소하고, 일관된 자료 처리를 어렵게한다.
          따라서 중복을 최소화하는것이 유리할 수 있다.
  • Data Integrity(데이터 무결성) : 데이터가 우연하게 혹은 의도적으로 변경되거나 파괴되지 않고 보존되는 특성을 말한다.
          정규화를 통해 데이터 무결성을 강화할 수 있다. 입력된 데이터가 오염되지 않고 입력된 그대로 사용할 수 있는것을 의미한다.
  • Anomaly(데이터 이상현상) : 정규화 되지 않은 테이블에서 기대한것과 다른 이상현상이 나타나는것을 말한다. 크게 세가지로 나뉜다.
    - Update anomaly(갱신 이상) : 동일한 데이터가 여러 행에 걸쳐서 있을경우 어떤 데이터를 갱신해야할지 명확하지 않아서 오류가 발생할 수 있다.
    - Insertion anomaly(삽입 이상) : null값을 허용하지 않는 열의 데이터로 null값이 들어오면 해당 데이터를 추가할 수 없다. 여러가지 이유로 데이터를 삽입할 수 없는 경우를 의미한다.
    - Deletion anomaly(삭제 이상) : 데이터 특정 부분을 지울 때 다른 부분들도 함께 지워지는 이상현상을 말한다.

데이터가 정규화되면 하나의 테이블에서 삽입, 삭제, 변경된 내용이 정의된 관계들에 의해 데이터베이스의 나머지 부분들로 전파된다.

따라서 해당 데이터베이스와 연동된 응용 프로그램에 최소한의 영향을 주게되며, 효율적인 활용이 가능해진다.

❯ SQL 종류

SQL은 역할과 기능에 따라 여러가지로 분류된다.

  • Data Definition Language(DDL) : 데이터를 정의하기 위해 사용되는 언어 ex. CREATE, DROP
  • Date Manipulation Language(DML) : 데이터베이스에 데이터를 저장할 때 사용되는 언어 ex. INSERT, DELETE, UPDATE
  • Data Control Language(DCL) : 데이터베이스 접근 권환과 관련된 언어 ex. GRANT, REVOKE
  • Data Query Language(DQL) :  정해진 스키마 내에서 쿼리하기 위한 언어(DML 일부로 보기도 한다) ex. SELECT
  • Transaction Control Language(TCL) : DML 거친 데이터 변경사항을 수정하는 언어 ex. COMMIT, ROLLBACK

어렵거나 애매한 부분들은 구글링을 하면서 학습하고있는데

공부를 하면 할수록 코딩 관련한 자료들이 무궁무진하다는걸 다시한번 느끼고있다.

인프런이나 유튜브에 좋은 강의들이 많이 올라와있고 학습 자료 또한 어마어마하게 존재한다.

시간과 노력만 충분하다면 충분히 학습할 수 있는 환경이라는 생각이 든다.

요즘들어 배우는 범위가 급격히 늘어난다는 느낌이 드는데, 차근차근 배우면서 진짜 실력을 갖춘 개발자가 되고싶다 :)