본문 바로가기

SQL

데이터베이스 디자인: 데이터베이스를 설계하는 기본 원칙.

반응형

데이터베이스 디자인은 데이터를 효과적으로 저장하고 검색하는 구조를 만드는 과정입니다. 이는 데이터의 무결성, 효율적인 데이터 검색 및 갱신, 그리고 사용자와 응용 프로그램의 요구사항을 충족시키기 위한 것입니다. 아래는 데이터베이스 디자인에 관련된 구체적인 예제와 전문용어 설명입니다.

1: 엔터티-관계 모델(ER 모델) 생성
ER Diagram 도구(예: Lucidchart, draw.io)를 사용하여, '학생'과 '과목'이라는 두 엔터티 간의 관계를 도식화합니다. 여기서 학생은 학번, 이름, 전공 등의 속성을 가지고, 과목은 과목 코드, 과목명, 학점 등의 속성을 가집니다. 학생과 과목 사이에는 '수강'이라는 관계가 있을 수 있습니다.


2: 정규화 과정 수행
주소록 데이터베이스를 설계할 때, '사람' 테이블에 '이름', '전화번호', '주소'라는 열이 있고, 한 사람이 여러 주소를 가질 수 있다면 주소를 별도의 테이블로 분리하여 1차 정규화를 수행합니다. 그 후, 각 테이블에 대해 2차, 3차 정규화를 진행하여 데이터 중복을 최소화합니다.


3: 인덱스 설계
고객 데이터베이스에서 고객의 ID, 이름, 이메일 주소 등이 저장되어 있고, 고객의 이메일 주소로 자주 조회를 한다면, 이메일 주소 열에 인덱스를 생성하여 조회 성능을 향상시킵니다.

CREATE INDEX idx_email ON Customers (Email);


4: 데이터베이스 스키마 생성
MySQL에서 학생 정보를 저장하는 테이블을 만듭니다.

CREATE TABLE Students (
    StudentID INT PRIMARY KEY,
    Name VARCHAR(100),
    Major VARCHAR(100)
);


예제 5: 보안 계획 수립
특정 사용자에게 학생 테이블에서만 데이터를 읽을 수 있는 권한을 부여합니다.

GRANT SELECT ON Students TO 'someuser'@'localhost';


관련 전문용어 설명
엔터티-관계 모델(ER 모델): 데이터베이스의 논리적 구조를 표현하는 데 사용되는 다이어그램입니다.
정규화(Normalization): 중복을 최소화하고 무결성을 유지하기 위해 데이터베이스를 여러 단계로 분할하는 과정입니다.
인덱스(Index): 데이터베이스에서 검색 성능을 향상시키기 위해 사용되는 데이터 구조입니다.
스키마(Schema): 데이터베이스의 구조, 자료형, 관계 등을 정의하는 논리적 틀입니다.
보안(Security): 데이터베이스 시스템에서 데이터에 대한 무단 접근, 조작 또는 손상을 방지하기 위한 전략입니다.

반응형