Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Archives
Today
Total
관리 메뉴

ki-sd 님의 블로그

[2026-04-27] 웹 아키텍처 총정리와 데이터베이스 ER 모델링 설계 로직 본문

OracleStudy

[2026-04-27] 웹 아키텍처 총정리와 데이터베이스 ER 모델링 설계 로직

ki-sd 2026. 4. 27. 20:14

그동안 학습한 자바(Java)와 오라클(Oracle)의 핵심 개념을 총정리하고, 두 기술이 브라우저와 어떻게 연결되는지 웹 아키텍처의 큰 그림을 그렸다. 더불어 프로젝트의 뼈대가 되는 요구사항 분석과 데이터베이스 모델링(ER-Model) 기법을 학습하며, 실제 서비스의 테이블을 설계하는 훈련을 진행했다.

 

1. 백엔드 기술 스택 총정리와 웹 아키텍처의 이해

  • 자바(Java) 코어: 객체 지향의 캡슐화(VO/DTO), 데이터 접근 객체(DAO), 싱글톤과 MVC 디자인 패턴, 그리고 컬렉션 프레임워크(List, Map)의 활용 등 백엔드 비즈니스 로직의 근간을 복습했다.
  • 오라클(Oracle) 코어: 데이터를 조작하는 DML(SELECT, INSERT, UPDATE, DELETE), 구조를 정의하는 DDL(CREATE, ALTER), 무결성을 위한 제약조건, 그리고 트랜잭션(COMMIT, ROLLBACK)의 중요성을 다시 한번 상기했다.
  • 웹 아키텍처 3계층: 사용자가 보는 브라우저(HTML/CSS/JS, Vue/React)에서 요청이 들어오면, 자바 서버(Spring Boot)가 이를 받아 비즈니스 로직을 처리하고, 오라클 데이터베이스와 통신(MyBatis/JPA)하여 데이터를 영구 저장하거나 꺼내오는 전체적인 데이터 흐름을 머릿속에 구조화했다.

2. 데이터베이스 모델링의 3단계 프로세스 고객의 요구사항을 수집하여 실제 데이터베이스 물리 저장소로 구현하기까지의 체계적인 설계 과정을 확립했다.

  • 개념적 설계 (Conceptual Modeling): 요구사항에서 명사(엔티티/테이블)와 그 속성(컬럼)을 추출하는 단계다. 학생, 과목, 수강이라는 핵심 주체를 식별하고 이들 간의 ER(Entity-Relationship) 모델을 스케치했다.
  • 논리적 설계 (Logical Modeling): 추출한 속성들에 구체적인 데이터형을 부여하고, 데이터의 중복을 제거하는 정규화(Normalization) 작업을 수행하는 핵심 단계다.
  • 물리적 설계 (Physical Modeling): 오라클 환경에 맞춰 실제 CREATE TABLE 명령어로 스키마를 생성하고, 검색 속도를 높이기 위한 인덱스(Index)나 뷰(View)를 정의하는 최종 단계다.

3. 관계(Relationship) 설정과 카디널리티(Cardinality) 엔티티 간의 상호작용을 나타내는 관계 설정 방식을 다양한 실무 사례로 분석했다.

  • 1:N 관계: '회사는 여러 사원을 가진다' 혹은 '회원은 여러 맛집을 예약할 수 있다'와 같은 가장 보편적인 구조다.
  • N:M 관계: '회원은 여러 도서를 대출할 수 있고, 도서 역시 여러 회원에게 대출될 수 있다' 같은 다대다 관계다. 관계형 DB에서는 N:M을 직접 구현할 수 없으므로, 중간에 '대출'이나 '주문' 같은 매핑 테이블(교차 엔티티)을 두어 두 개의 1:N 관계로 풀어내야 한다는 설계의 핵심 원리를 파악했다.

4. DDL 실전 적용: 회원(Member) 및 장바구니(Buy) 테이블 설계 이론으로 배운 제약조건과 모델링 원칙을 적용해 쇼핑몰의 근간이 되는 테이블 2개를 직접 DDL로 구현했다.

  • Member 테이블 (회원): 아이디(id)를 기본키(PK)로 설정하고, 비밀번호, 이름, 우편번호, 주소를 NOT NULL로 강제하여 데이터 누락을 막았다. 성별(sex)에는 CHECK 제약조건을 걸어 '남자' 또는 '여자'만 입력되도록 했고, 전화번호(phone)에는 UNIQUE를 주어 중복 가입을 원천 차단하는 강력한 무결성 설계를 진행했다.
  • Buy 테이블 (구매/장바구니): 각 구매 내역을 식별하는 고유 번호(no)를 PK로 두고, 어떤 회원이 구매했는지 추적하기 위해 id를 외래키(FK)로 잡아 Member 테이블을 참조하게 만들었다. 기본값(DEFAULT) 제약조건을 활용해 가격이나 등록일에 기본 데이터를 자동으로 채워 넣는 실무적 팁을 적용했다.