데이터 무결성 지켜야지, 안 지킬거야??

2023. 8. 7. 12:06프로젝트/[Dotoring] 멘토링 어플리케이션

728x90

 

데이터 무결성

 

데이터의 무결성이란 무엇일까??

 

 

필자가 이해한 바로는 데이터 무결성이란 업무적 무결성 + 데이터베이스에서의 무결성이다.

 

  • 업무적 무결성이란 애플리케이션 로직 안에서 포함되는 어떠한 제약조건이다.
  • DBMS에서의 무결성이란 데이터베이스에 타입, 관계, 속성등을 정의하여 트랜잭션을 유지시켜주는 최소한의 장치이다.

 

이번 포스팅에서는 DBMS에서의 무결성에대해서 다뤄보도록 하겠다.

 

만약, DB에서 데이터 무결성을 설계하지 않을 경우에는 어떠한 일들이 일어날까??

 

 

  • PK를 사용하지 않을 경우 → 테이블에 중복된 데이터 존재
  • FK를 사용하지 않을 경우 → 부모와 자식 데이터의 논리적인 관계가 깨질 수 있다.
  • 컬럼 제약 조건을 하지 않을 경우 → 기본값, NULL값 등이 비정상적으로 데이터베이스에 존재할 수 있다.

 


 

 

DBMS에서 제공해주는 기능들을 활용하여 데이터 무결성을 지킬 수 있다.

 

  • PK
    • 지정된 컬럼들이 유일성이 위배되는 일이 없음을 보장
    • PK는 NULL이 될 수 없음
  • Unique
    • 지정된 컬럼들이 유일성이 위배되는 일이 없음을 보장
    • NULL 허용
    • 인덱스가 자동으로 걸린다!
  • FK
    • 테이블간의 논리적 관계가 유지됨을 보장
    • FK값은 반드시 참조하는 테이블의 PK 값으로 나타내어야한다.
    • FK값은 NULL을 가질 수 있다.
    • FK에는 여러 옵션이 있다.
      • Cascaded Option : Master 삭제시 레코드와 함께 삭제됨
      • Nullified Option : Master 삭제시 해당 값을 Null로 세팅함
      • Restricted Option : FK가 존재하면 Master레코드를 삭제할 수 없다.

 

FK가 NULL일 경우 단점

FK가 NULL이 아닐 경우와 비교하면, 대상 테이블에 외래키가 있는 경우 NULL 허용 없이 처리를 완료할 수 있다.FK가 NULL을 허용하게 되면, 개발자가 실수로 FK에 값을 넣지 않을 수도 있다.

 

 

  • Data Type
    • 데이터 형 제한함으로서 데이터 무결성 유지

 

PK의 데이터 타입의 경우 상용 프로그램에서는 관행적으로 id 값은 Bigint로 application에서는 Long으로 선택하는 것을 추천한다. - 카카오 테크 캠퍼스 멘토님

 

 

 

VARCHAR vs CHAR

VARCHAR : 가변 길이 문자열 저장하여 공간이 절약되지만, 행의 업데이트가 빈번할 경우 단편화 문제가 발생 가능

CHAR : 고정 길이 문자열 저장

검생 속도 : CHAR >>> VARCHAR

판단 기준

”데이터의 길이가 고정되어 있는 가”를 우선적으로 고려할 것!

 

 

  • Default
    • 특정 컬럼에 대해 명시적으로 값을 입력하지 않았을 경우에 SQL 서버가 자동으로 지정된 값을 넣어줌으로써 데이터의 무결성 유지

 

CREATE TABLE 테이블이름

(

    필드이름 필드타입 DEFAULT 기본값,

    ...

)

 

 

지금까지 데이터 무결성에대한 포스팅이었습니다. 감사합니다!

 

728x90