Database / SQL
RDBMS와 NoSQL의 차이점?
- RDBMS : 데이터를 테이블 형태로 표현하는 방식이며, 엑셀을 생각하면 쉽습니다.
- 수학적 논리 관계를 테이블의 형태로 구성한 구조로써 Table 내의 컬럼 중 일부를 다른 테이블과 중복해 각 테이블간의 상관관계를 정의한다.
- 특징
- 정해진 스키마에 따라 데이터를 저장하여야 하므로 명확한 데이터 구조를 보장합니다.
- 관계는 각 데이터를 중복없이 한 번만 저장할 수 있다는 장점
- Table간 관계를 맺고 있어 시스템이 커질 경우 Join 문이 많은 복잡한 쿼리가 만들어 질 수 있습니다.
- 성능 향상을 위해서는 Scale-up만 지원합니다.
- 데이터가 유연하지 못하다.
- NoSQL : NoSQL이라는 용어는 비관계형 데이터베이스 유형을 가리키며, 이 데이터베이스는 관계형 테이블과는 다른 형식으로 데이터를 저장합니다.
- 특징
- 스키마가 없기 때문에 유연하며 자유로운 데이터 구조를 가질 수 있다.
- 데이터 분산이 용이하며, 성능 향상을 위한 Scale-up뿐만 아니라 Scale-out도 가능합니다.
- 데이터 중복이 발생할 수 있으며, 이 데이터가 변경 될 경우, 수정을 모든 컬랙션에서 수행해야 합니다.
- 데이터 구조가 명확하지 않습니다. 데이터 구조 결정이 어렵다는 단점
Primary Key, Foreign Key
- Primary Key : 데이터베이스 테이블 내의 모든 레코드에서 고유한 아이디를 제공합니다
- 특징
- 모든 레코드가 서로 다른 값을 가지고 있어 각 레코드를 식별할 수 있다.
- Null값이 존재할 수 없다.
- 레코드의 값은 중복이 불가능하다.
- 테이블에는 하나의 기본키만 가질 수 있지만 경우에 따라 1개 이상의 기본키를 정의할 수 있다.
- Foreign key(외래 키) : 다른 테이블의 기본키를 그대로 참조하는 값으로 개체와의 관계를 식별하는데 사용됩니다.
- 특징
- 하나의 테이블에 여러 Foreign Key가 존재할 수 있습니다.
- Foreign Key는 참조하는 Primary Key의 값과 일치하거나 NULL이 될 수 있습니다.
- 데이터의 일관성과 무결성 유지에 중요한 역할을 합니다. 예를 들어, Foreign Key를 사용하여 '주문' 테이블이 '고객' 테이블의 특정 고객을 참조하도록 할 수 있습니다.
꼬리질문 1. CASCADE가 뭔가요??
- 다른 테이블과 관계를 맺고 있는 참조 데이터가 삭제 또는 수정 될 때 어떤 행위를 해야 하는지 설정할 수 있습니다.
- CASCADE : 종속, 작은 폭포라는 의미이며, 참조데는 테이블에서 삭제하거나 수정되면, 참조하는 테이블에서도 삭제와 수정이 같이 이루어집니다.
- SET Null, No Action 등이 존재합니다.
데이터베이스 정규화
데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 합니다.