ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 무결성 지켜야지, 안 지킬거야??
    Project Trouble Shooting/[Dotoring] 멘토링 어플리케이션 2023. 8. 7. 12:06
    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
Designed by Tistory.