CS 스터디 9주차

Park Jae Hong·2023년 7월 26일
0

JOIN에 대해서 설명해 주세요.

: JOIN은 데이터베이스에서 테이블 간에 데이터를 결합하는데 사용되는 SQL(Structured Query Language)의 기능입니다. 데이터베이스에서 테이블은 데이터를 구조화하고 저장하는 데 사용되는 표 형태의 객체입니다. 때때로 데이터가 여러 테이블에 분산되어 있을 수 있으며, JOIN 연산은 이러한 테이블들 간의 관계를 이해하고, 필요한 데이터를 하나로 합치는 데 도움을 줍니다.

내부 조인과 외부 조인의 차이는 무엇인가요?

  • 내부 조인 (INNER JOIN)
    내부 조인은 두 테이블 간에 공통된 값을 가지고 있는 레코드들만 반환합니다. 즉, 조인 조건을 만족하는 레코드들만 결합됩니다. 조인 조건을 만족하지 않는 레코드는 결과에 포함되지 않습니다. 내부 조인은 일치하는 레코드들을 가져와 데이터를 필터링하는 역할을 수행합니다.

  • 외부 조인 (OUTER JOIN)
    외부 조인은 조인 조건을 만족하지 않더라도 모든 레코드를 반환하는 조인 유형입니다. 외부 조인은 일치하는 레코드들을 가져오는 것은 물론, 조인 조건을 만족하지 않는 레코드들도 결과에 포함시킵니다. 조인 조건을 만족하지 않는 레코드의 경우, 해당 열들은 NULL로 채워집니다.

정규화에 대해서 설명해 주세요.

: 정규화(Normalization)는 데이터베이스 설계에서 중복을 최소화하고 데이터의 무결성을 유지하기 위해 데이터를 구조화하는 과정입니다. 이를 통해 데이터베이스의 효율성과 유지 보수성을 향상시킬 수 있습니다.

정규화를 통해 데이터베이스를 여러 개의 관련된 테이블로 분해하는데, 이를 정규형이라고 합니다. 관계형 데이터베이스에서는 1차 정규형, 2차 정규형, 3차 정규형, BCNF(Boyce-Codd Normal Form), 4차 정규형, 5차 정규형 등이 있으며, 더 높은 정규형으로 갈수록 더 많은 중복이 제거되고 무결성이 강화됩니다.

정규화의 주요 목표는 다음과 같습니다:

중복 최소화: 데이터베이스에서 데이터를 중복 저장하지 않고, 테이블 간의 관계를 이용하여 중복을 최소화합니다. 이로 인해 데이터 저장 공간을 절약하고 데이터의 일관성을 유지할 수 있습니다.

삽입/수정/삭제 이상 방지: 정규화를 통해 데이터가 잘 구조화되면 삽입, 수정, 삭제 작업이 간단하고 정확해집니다. 특히, 이상 현상을 방지하여 데이터의 무결성을 보장합니다.

효율적인 쿼리 성능: 적절한 정규화를 통해 쿼리의 성능을 향상시킬 수 있습니다. 테이블이 작고 간결하면 데이터를 검색하고 조인하는데 더 효율적이기 때문입니다.

정규화의 단계는 일반적으로 다음과 같습니다:

1차 정규형: 모든 도메인이 원자값(Atomic Value)으로 구성되어야 합니다.
2차 정규형: 부분 함수 종속성(Partial Functional Dependency)을 제거하여 기본 키를 제외한 모든 속성이 기본 키에 완전하게 종속되도록 합니다.
3차 정규형: 이행적 함수 종속성(Transitive Functional Dependency)을 제거합니다.
BCNF: 결정자에 의해 함수 종속성을 분해하여 테이블 간의 무손실 조인을 보장합니다.
추가적인 정규화: BCNF 이상의 정규형을 만족하지만 종속성이 남아있을 경우, 더 높은 정규형을 만족시킵니다.
정규화는 데이터베이스의 복잡성을 줄이고 유지 보수를 용이하게 만드는데 도움이 됩니다. 그러나 과도한 정규화는 데이터를 검색하는데 비용이 많이 들 수 있으므로, 데이터의 성격과 용도에 맞는 적절한 정규화 수준을 선택하는 것이 중요합니다.

파티셔닝과 샤딩에 대해서 설명해 주세요.

파티셔닝 (Partitioning):
파티셔닝은 데이터를 논리적 또는 물리적으로 분할하여 여러 파티션으로 나누는 기술입니다. 파티셔닝은 데이터베이스 내의 테이블이나 인덱스를 조각내어 분산 저장하는 방식으로 사용됩니다.
ORM이란 무엇인가요?

장점:

데이터를 분산 저장하므로 성능이 향상될 수 있습니다.
대량의 데이터를 처리할 때 더 효율적으로 작업할 수 있습니다.
데이터베이스 관리와 유지보수가 간편해집니다.

샤딩 (Sharding):
샤딩은 데이터베이스에서 대량의 데이터를 여러 개의 논리적 또는 물리적 데이터베이스로 나누는 기술입니다. 각 데이터베이스는 독립적으로 운영될 수 있으며, 각각의 데이터베이스는 독립적으로 데이터를 저장하고 관리합니다.

샤딩의 장점:

데이터베이스 간의 부하를 분산하여 전체 시스템의 확장성과 성능을 향상시킵니다.
각각의 데이터베이스가 독립적으로 운영되므로 장애 복구와 관리가 용이해집니다.
대규모 시스템에서 데이터를 처리할 때 확장성과 성능 면에서 우수한 결과를 제공합니다.

NoSQL이란 무엇인가요?

: NoSQL은 "Not Only SQL"의 약자로, 관계형 데이터베이스가 아닌 다른 형태의 데이터베이스를 가리키는 용어입니다. NoSQL 데이터베이스는 전통적인 관계형 데이터베이스가 가진 특성과 제한 사항을 벗어난 형태의 데이터베이스로서, 대용량의 비정형 데이터를 다루는데 특화되어 있습니다.

스키마란 무엇인가요?

스키마(Schema)는 데이터베이스에서 데이터의 구조, 형식 및 제약 조건에 대한 설계를 정의하는 개념입니다. 쉽게 말해, 스키마는 데이터베이스의 테이블, 열, 관계 등 데이터 구조에 대한 청사진이라고 할 수 있습니다.

데이터베이스의 스키마는 다음과 같은 정보를 포함할 수 있습니다:

테이블 구조: 테이블의 이름, 컬럼(열)의 이름, 데이터 타입, 크기 등을 정의합니다.

기본값(Default): 데이터가 특정 열에 삽입될 때 기본으로 설정되는 값입니다.

제약 조건(Constraints): 데이터의 무결성을 보장하기 위해 설정되는 규칙으로, 고유한 값, 외래 키(Foreign Key), NULL 또는 NOT NULL 제약 등이 있습니다.

인덱스(Index): 데이터베이스에서 데이터를 빠르게 검색하기 위해 설정되는 인덱스 정보를 포함합니다.

profile
The people who are crazy enough to think they can change the world are the ones who do. -Steve Jobs-

0개의 댓글