데이터의 무결성, 일관성

데이터 무결성

  • 무결성은 데이터가 미리 정의된 규칙(제약 조건)에 위배되지 않고 정확하고 유효한 상태를 유지하는 것을 의미한다.

    • 도메인 무결성 : 책의 페이지 수 항목에는 반드시 숫자만 적어야 한다.

    • 개체 무결성 : 모든 책은 서로 겹치지 않는 고유한 '도서 관리 번호'를 가져야 한다.

    • 참조 무결성: 대출 기록에 있는 도서 관리 번호는 반드시 도서 목록에 실제로 존재하는 책이어야 한다.

데이터 일관성

  • 일관성은 특정 작업(트랜잭션)의 전후에도 데이터베이스의 논리적인 상태가 깨지지 않고 유지되는 것을 의미한다.

데이터 가용성 : 서버 한 대가 고장 나도 다른 서버가 즉시 그 역할을 이어받아 중단 없이 서비스를 제공할 수 있는 것

동시성 : 여러 사용자가 동시에 같은 데이터를 읽고 쓸 수 있음

실시간 접근성, 보안성, 독립성, 데이터 중복 최소

DBMS (Database Management System)

  • MySql, 오라클 등

  • 데이터를 저장, 수정, 검색, 삭제하는 기능을 제공하는 소프트웨어

테이블 구조에서 다대다(M:N) 관계를 직접 표현하는 것이 불가능한 이유는 하나의 열(column)에 여러 개의 값을 넣을 수 없다는 관계형 데이터베이스의 기본 규칙(제1 정규형) 때문입니다.

그렇지 않으면 주문 id 하나에 여러 상품 id Fk를 연결해야하는데 데이터 중복이 생긴다.

이럴 경우 N:M 관계가 두 개의 테이블에 중복 저장되는 것임(한 개의 주문에 여러 상품, 한 개의 상품에 여러 주문)

주문 1에 상품 a,b,c가 한 테이블에 저장

상품 테이블에 상품 a에 대하여 주문 1, 2, 3 저장되어있음

이렇게 물론 할 수는 있다. 근데 관리가 어려움

왜냐 일단 삽입 이상 상품에 대하여 주문이 없음 그럼 NULL로 저장해놔야 함.

그리고 관계형 테이블 정의 자체가 관계를 연결하는건데 하나의 테이블에 주문 상품 합쳐서 테이블 구성함. 이러면 왜 관계형 테이블 쓰는거임? 걍 이게 큰 듯.

만약 학생이 탈퇴했음. 그러면 주문 일단 다 사라짐. 그리고 주문 테이블에 학생 골라서 삭제해야함. 데이터 관리가 빡세진다. (삭제, 수정 시 관리 힘듦)

Last updated