candidate key(후보키)중 선택한 main key로써, 각 row를 구분하는 유일한 열(column)을 말한다. 그래서 기본키는 Null 값을 가질 수 없고, 중복된 값을 가질 수 없다. 기본키는 table당 1개만 지정해야한다.
Relation
table중 DB에서 사용할 조건을 갖춘것
table이랑 구분하지 않고 사용하기도 한다.
Super Key(슈퍼키) - 유일성
Candidate Key(후보키) - 유일성 + 최소성
Alternate Key(대체키) - primary key를 제외한 나머지 후보키들을 말한다.
N:M 관계
관계형 데이터베이스(RDB)에서 양쪽 entity모두가 서로에게 1:N관계를 갖는 구조
1 : N + N : 1 = N : M
ex)수강신청 - 학생 <-> 수업
1 : N 관계
고객은 여러 상품을 주문할 수 있고, 주문된 상품은 1명의 고객만을 갖는다.
Foreign Key(외래키)
다른 table의 Primary key column과 연결되는 table의 column을 의미한다.
두 table을 연결할 때 한 table의 외래키가 다른 하나의 table의 기본키가 된다.
Join이란 두 개 이상의 테이블을 서로 연결하여 하나의 결과를 만들어 보여주는 것
inner join은 두 테이블에 모두 있는 내용만 join되는 방식(교집합)
left outer join은 왼쪽 table의 모든 행에 대해서 join을 진행
RDB | NoSQL | |
---|---|---|
schema | 엄격한 schema | 느슨한 schema |
형식 | table 형식 | key-value |
중복 | 없음(무결성) | 데이터 중복 |
사용 | 데이터 update 많을 때 유리 | 데이터 update가 적고 조회가 많을때 유리, 데이터양이 많은 경우 |
개발목적 | 데이터 중복 감소 | 애자일/ 확장가능성/ 수정가능성 |
NoSql은 언제 사용하면 좋을까?
NoSQL은 정확한 데이터 구조가 정해지지 않은 경우, 데이터 update가 적고 조회가 많은경우,Scale out(수평적 확장)이 가능하므로 데이터 양이 매우 많은 경우에 사용하는게 좋다.
RDB는 언제 사용하면 좋을까?
RDB는 데이터 구조가 명확하여 변경될 여지가 없는 경우, 또 데이터 중복이 없으므로 데이터 update가 잦은 시스템에서 사용하면 좋다.