[데이터베이스개론·SQL] 250113

이슬비·2025년 1월 13일

환경 세팅

Oracle Database 설치

Oracle Database에서 Oracle Database 21C를 다운로드 한다.

setup.exe 파일을 실행한다.

명령 프롬프트에 sqlplus "/as sysdba"를 입력하여 SQL *Plus로 연결한다. 그리고 실습용 사용자 계정을 생성한다.

CREATE USER [USER_ID] IDENTIFIED BY [PASSWORD];
GRANT CONNECT, RESOURCE, DBA TO [USER_ID];

SQL Developer

SQL Developer에서 Windows 64-bit with JDK 17 included를 다운로드 한다. 그리고 sqldeveloper.exe 파일을 실행한다.

[새 연결]을 클릭한 후 이전에 생성했던 사용자 이름과 비밀번호를 입력한다. [테스트][접속]을 클릭하여 접속 상태를 확인한다.

데이터베이스 개념

데이터(Data)

현실 세계에서 관찰하거나 측정하여 수집한 사실과 값으로, 가공되지 않는 원천(raw) 정보이다.

데이터베이스(Database)

데이터를 체계적으로 저장, 관리, 검색하기 위한 시스템으로, 정보의 집합이다.

  1. 관계형 데이터베이스(RDBMS) : Oracle, MySQL, PostgreSQL
  2. NoSQL 데이터베이스 : MongoDB, Cassandra
  3. 클라우드 데이터베이스 : AWS RDS, Google BigQuery
  4. 분산 데이터베이스 : Hadoop, Apache Cassandra

데이터베이스는 데이터를 2차원의 테이블 형태로 표현한 것으로, 테이블을 담는 그릇이다.

관계형 데이터베이스(RDBMS)

데이터를 테이블 형식으로 저장한다. 행(Row)과 열(Column) 구조이며 데이터 간의 관게를 명확히 정의한다. SQL을 사용하여 데이터를 관리한다.

구성 요소는 다음과 같다.

  • 데이터베이스 스키마 : 데이터베이스의 구조와 제약조건을 정의.
  • 테이블 : 데이터를 저장하는 기본 단위.
  • 행(Row) : 데이터 항목.
  • 열(Column) : 데이터 속성.
  • 키(Key) : Primary Key, Foreign Key 등 데이터 간의 관계 정의.

실제로 Foreign Key는 조건에 따라 에러가 나는 경우가 많기 때문에, 적극적으로 사용하지는 않는다.

모델링

데이터베이스 모델링

데이터를 구조화하여 현실 세계의 정보를 데이터베이스에 표현하는 과정이다. 시스템의 효율성과 무결성을 확보하기 위한 핵심 단계이다.

  • 엔터티(Entitiy)
    • 데이터베이스에서 관리하려는 대상.
  • 속성(Attribute)
    • 엔터티의 세부 정보.
  • 관계(Relationship)
    • 엔터티 간의 연결.
  • 키(Key)
    • 데이터를 식별하거나 연결하기 위한 고유한 값.
    • Primary Key : 테이블의 각 행을 고유하게 식별.
    • Foreign Key : 다른 테이블과의 관계를 정의.
  • 제약 조건(Contraint)
    • 데이터 무결성을 유지하기 위한 규칙.
    • UNIQUE, NOT NULL, CHECK.

PK(Primary Key) : 중복과 NULL 값을 허용하지 않는다.
UK(Unique Key) : 중복과 NULL 값을 허용한다.

ERD(Entity Relationship Diagram)

데이터베이스 설계의 기초가 되는 다이어그램이다. 엔터티(Entity), 속성(Attribute), 관계(Relationship)를 활용하여 시각적으로 표현한다.

  • 엔터티(Entity) : 데이터베이스에서 관리해야 할 개체로, 테이블로 구현.
  • 속성(Attribute) : 엔터티가 가지고 있는 정보로, 테이블의 컬럼에 해당.
  • 관계(Relationship) : 엔터티 간의 연관성을 나타내며, RDBMS에서 외래 키로 구현.

ERD 필요성

  1. 데이터 구조 시각화 : 관리할 데이터와 관계를 명확히 정의.
  2. 문제점 사전 파악 : 설계 단계에서 발생 가능한 문제를 조기에 발견 가능.
  3. 팀 간 협업 촉진 : 개발자, 기획자, DB 관리자 간의 공통 이해 도구로 사용.
  4. 효율적 데이터베이스 설계 : 정규화된 데이터 구조를 기반으로 효율적인 데이터 저장 및 관리 기능.

ERD 작성 시 주의 사항

  1. 데이터 중복 방지 : 동일한 속성을 여러 엔터티에 중복 정의하지 않도록 설계.
  2. 정규화 적용 : 데이터 무결성을 위해 1NF, 2NF, 3NF를 적용.
  3. 확장성 고려 : 미래 데이터 구조 확장을 고려하여 유연하게 설계.
  4. 다대다 관계 해결 : 중간 엔터티를 도입하여 다대다 관계를 1:N 관계로 분리.

ERD 표기법

ERD 작성 도구는 다음과 같다.

도구비용사용성협업 기능DB 연결주요 사용 사례
Lucidchart무료/유료쉬움강력간접 지원헙업 중심 모델링
Draw.io무료쉬움기본적없음간단한 다이어그램 작성
DB Designer무료/유료쉬움강력다양한 DBMS 지원팀 기반 설계
ER/Studio유료어려움강력다양한 DBMS 지원대규모 엔터프라이즈 설계

ERD 작성 순서

  1. 엔터티를 작성하고 그린다.
  2. 엔터티를 적절하게 배치한다.
  3. 엔터티 간의 관계를 설정한다.
  4. 관계명을 기입한다.
  5. 관계의 참여도를 기입한다.
  6. 관계의 필수/선택 여부를 기입한다.

관계의 필수/선택 여부는 마지막이다.

Draw.io에서 ERD를 그리면 다음과 같다.

ERD 리뷰
1. 공통코드 테이블을 활용한다. 코드와 코드값으로 구성된 다양한 코드들을 모아서 하나의 테이블에서 관리하며, 수많은 테이블과 JOIN 속성으로 연결되어 있다.
2. 고객 등급은 가변적이기 때문에 이에 대한 속성 처리도 추가적으로 필요하다.
3. 상품 또는 후기들을 볼 때는 Sequence를 설정한다.

0개의 댓글