728x90
반응형
* Microsoft SQL 기준으로 작성하였습니다.
[ 정규화 vs 비정규화 데이터베이스 ]
👀 정규화
: 중복을 최소화하도록 설계된 데이터베이스입니다. 데이터베이스에 한 번만 저장해도 된다는 장점이 있지만 상당수의 일상적 질의를 처리하기 위해 JOIN을 많이 하게 되는 단점이 있습니다.
👀 비정규화
: 읽는 시간을 최적화하도록 설계된 데이터베이스입니다. 높은 규모 확장성을 실현하기 위해 자주 사용되는 기법입니다.
[ 기본 SQL 문 ]
👀 조회
/* 모든 칼럼 불러오기 */
SELECT * FROM 테이블명
/* 특정 칼럼 불러오기 */
SELECT 칼럼1, 칼럼2 FROM 테이블명
/* 상위 N개의 데이터만 불러오기 */
SELECT TOP N * FROM 테이블명
/* 중목되지 않는 데이터만 불러오기 */
SELECT DISTINCT 칼럼1 FROM 테이블명
/* 조건에 해당하는 데이터 불러오기 */
SELECT * FROM 테이블 WHERE 조건절
/* 오름차순 정렬 */
SELECT * FROM 테이블명 ORDER BY 칼럼1 ASC
/* 내림차순 정렬 */
SELECT * FROM 테이블명 ORDER BY 칼럼 DESC
👀 추가
/* 모든 데이터를 다 넣을 때 */
INSERT INTO 테이블명 VALUES (값1, 값2, ...)
/* 특정 칼럼에만 데이터 넣을 때 */
INSERT INTO 테이블명 (칼럼1, 칼럼2) VALUES (값1, 값2)
👀 갱신
/* 전체 데이터 갱신 */
UPDATE 테이블명 SET 칼럼1=값1, 칼럼2=값2
/* 조건에 해당되는 데이터 갱신 */
UPDATE 테이블명 SET 칼럼1=값1 WHERE 조건절
👀 삭제
/* 전체 데이터 삭제 */
DELETE FROM 테이블명
/* 조건에 해당되는 데이터 삭제 */
DELETE FROM 테이블명 WHERE 조건절
[ 소규모 데이터베이스 설계 ]
- 모호성 처리
데이터베이스에 관계된 문제에는 의도적이든 의도적이지 않든 모호한 부분이 내포되어 있습니다. 설계를 시작하기 전에 정확히 무엇을 설계해야 하는지 이해해야 합니다. - 핵심 객체 정의
이 시스템의 핵심 객체가 무엇인지 살펴봐야 합니다. 보통 핵심 객체 하나당 하나의 테이블을 사용합니다. - 관계 분석
테이블끼리 다-대-다인지 일-대-다인지 관계를 분석합니다. - 행위 조사
세부적인 부분을 채워 넣어줍니다. 흔하게 수행될 작업들을 살펴보고, 관련된 데이터를 어떻게 저장하고 가져올 것인지 이해해야 합니다.
[ 대규모 데이터베이스 설계 ]
대규모의 규모 확장성이 높은 데이터베이스를 설계할 때에 JOIN 연산은 일반적으로 느리기 때문에 데이터를 비정규화해야합니다. 데이터를 여러 테이블에 중복해서 저장해야 할지도 모르니 데이터가 어떻게 사용될지 주의해야 합니다.
반응형
'프로그램 개발 > 미분류' 카테고리의 다른 글
[코딩 인터뷰]지식 기반 문제 - 스레드와 락 (0) | 2023.01.13 |
---|---|
[코딩 인터뷰]지식 기반 문제 - 데이터베이스 문제 (0) | 2023.01.12 |
[코딩 인터뷰]지식 기반 문제 - Java 문제 (0) | 2023.01.11 |
[코딩 인터뷰]지식 기반 문제 - Java (0) | 2023.01.11 |
[코딩 인터뷰]지식 기반 문제 - C와 C++ 문제 (0) | 2023.01.06 |