프로그램 개발/미분류

[코딩 인터뷰]지식 기반 문제 - 데이터베이스

(ㅇㅅㅎ) 2023. 1. 12. 16:53
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 조건절

 

 

[ 소규모 데이터베이스 설계 ]

  1. 모호성 처리
     데이터베이스에 관계된 문제에는 의도적이든 의도적이지 않든 모호한 부분이 내포되어 있습니다. 설계를 시작하기 전에 정확히 무엇을 설계해야 하는지 이해해야 합니다.
  2. 핵심 객체 정의
     이 시스템의 핵심 객체가 무엇인지 살펴봐야 합니다. 보통 핵심 객체 하나당 하나의 테이블을 사용합니다.
  3. 관계 분석
     테이블끼리 다-대-다인지 일-대-다인지 관계를 분석합니다.
  4. 행위 조사
     세부적인 부분을 채워 넣어줍니다. 흔하게 수행될 작업들을 살펴보고, 관련된 데이터를 어떻게 저장하고 가져올 것인지 이해해야 합니다.

 

[ 대규모 데이터베이스 설계 ]

 대규모의 규모 확장성이 높은 데이터베이스를 설계할 때에 JOIN 연산은 일반적으로 느리기 때문에 데이터를 비정규화해야합니다. 데이터를 여러 테이블에 중복해서 저장해야 할지도 모르니 데이터가 어떻게 사용될지 주의해야 합니다.

반응형