July 27, 2020
관계형 데이터란 데이터를 서로 상호관련성을 가진 형태로 표현한 데이터를 말한다.
각각의 테이블은 컬럼(column, 행)과 로우(row, 열)로 구성된다.
각각의 테이블들은 서로 상호관련성을 가지고 서로 연결될 수 있다.
테이블 끼리의 연결에는 크게 3가지 종류가 있다.
테이블 A의 로우와 테이블 B의 로우가 정확히 일대일 매칭이 되는 관계를 one to one 관계라고 한다.
users and user_profiles - one to one
테이블 A의 로우가 테이블 B의 여러 로우와 연결이 되는 관계를 one to many 관계라고 함.
각 고객은 여러 제품을 구매할 수 있지만 구매된 제품의 주인은 오직 한 고객 뿐이다 - one to many
즉 데이터베이스에게 user_id의 값은 user 테이블의 id 값이며 그러므로 users 테이블의 id 컬럼에 존재하는 값만 생성될 수 있다.
하나의 테이블에 모든 정보를 다 넣으면 동일한 정보들이 불필요하게 중복되어 저장된다.
잘못된 데이터가 저장 될 가능성이 높아진다.
여러 테이블에 나누어서 저장한 후 필요한 테이블 끼리 연결 시키면 위의 두가지 문제가 사라진다.
normalization (졍규화)
라고 한다.💡트랜잭션 (Transaction)
일련의 작업들이 마치 하나의 작업처럼 취급되어서 모두 다 성공하거나 아니면 모두 다 실패하는걸 이야기 한다.
관계형 데이터베이스와 다르게 비관계형 이기 때문에 데이터들을 저장하기 전에 정의 할 필요가 없다.
👉 관계형 데이터베이스는 데이터들을 저장하기 전에 어디에 어떻게 저장할 것 인지를 정의해야 한다.
👉 즉, 테이블을 정의해야 한다. (테이블 이름, 테이블 관계, 각 컬럼의 타입 등…)
💡 SQL(RDBMS) vs NoSQL
장점
단점
장점
단점
트랜잭션이 안되거나 비교적 불안정하다.
👉 주로 비정형화 데이터 그리고 완전성이 상대적으로 덜 유리한 데이터를 저장하는데 유리하다. (ex. Log 데이터)