관계형 데이터란, 데이터간 서로 관련성을 가진 형태로 표현하는 것을 의미함
모든 데이터는 2차원의 테이블로 표현
각각의 테이블은 컬럼과 로우로 구분
각각의 테이블은 관계에 따라 1:1, 1:N, N:N으로 구분됨
대표적인 RDBMS에는 mysql, postgresql이 있음
A 테이블의 로우와 B 테이블의 로우가 정확히 일대일 매칭이 되는 관계
** 한 명의 유저는 한 개의 프로필만을 가질 수 있는 1:1 관계
A 테이블의 로우가 B 테이블의 여러 로우와 연결 되는 관계
** 한 고객은 여러 제품을 구매하지만 구매된 제품은 한 고객밖에 없는 관계
A 테이블의 여러 로우가 B 테이블의 여러 로우와 연결되는 관계
** 책은 여러 작가에 의해 쓰이고 작가는 여러 책을 쓸 수 있음
Foreign key(외래키) 개념을 사용
위의 1:1 관계에서 user_profiles 테이블의 user_id 컬럼은 users에 걸려있는 외부 키
하나의 테이블에 모든 정보를 다 넣어 데이터를 저장하게 된다면,
동일한 정보가 불필요하게 중복 저장됨
이에 더 많은 디스크를 사용하게 됨
잘못된 데이터가 저장될 가능성이 높아짐
여러 테이블에 나누어 저장한 후 테이블 간 연결하게 된다면,
일련의 작업들이 하나의 작업처럼 취급되어 모두 다 성공하거나 모두 다 실패하는 것을 의미
원자성 : 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 것
일관성 : 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태를 유지하는 것
고립성 : 트랜잭션 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장하는 것
지속성 : 성공적으로 수행된 트랜잭션은 시스템 문제, DB 일관성 체크 등을 하더라도 영원히 반영되어야 함
비관계형 타입의 데이터를 저장할 때 주로 사용되는 데이터베이스 시스템
관계형 데이터베이스와는 다르게 데이터들을 저장하기 전에 테이블 등을 정의할 필요가 없음
대표적으로 MongoDB, Cassandra 등의 비관계형 데이터베이스가 있음
장점
단점