데이터 모델의 핵심 단위, 업무에서 의미 있는 정보를 분류한 그룹
코드(행) 하나하나가 인스턴스, 이 인스턴스가 모여 엔터티를 구성
엔터티는 속성의 집합이며, 다른 엔터티와 관계를 맺음
최소 2개 이상의 인스턴스를 포함하고, 업무에서 활용 가능해야 함
엔터티 유형:
유형: 상품, 사람 등 물리적 대상
개념: 학과, 종목 등 비물리적
사건: 주문, 응모 등 발생 이벤트
발생 시점 분류: 기본/중심/행위 엔터티
✅ 엔터티 이름짓기
엔터티의 구성 요소이자 인스턴스의 특징
속성은 최소 단위의 정보로, 하나의 속성은 하나의 값만 가짐
속성 종류:
기본 속성: 업무에서 직접 추출
설계 속성: 모델링 목적에 맞춰 정의
파생 속성: 계산 결과 (가능한 지양)
역할에 따른 분류:
PK(Primary Key): 엔터티 식별용
FK(Foreign Key): 관계 연결용
일반 속성: 기타 정보
✅ 속성 명명 규칙
엔터티 간 논리적 연관성
관계는 “존재 기반(소속)” 또는 “행위 기반(주문)”으로 나뉨
관계차수(Cardinality)
1:1 / 1:N / M:N (→ 중간 테이블로 분해 필요)
관계 선택 사양
필수(실선, |) / 선택(점선, O)
✅ 관계 읽는 법
엔터티 내 인스턴스를 고유하게 구분하는 속성
주식별자(PK): 유일성, 최소성, 불변성, 존재성 만족해야 함
보조식별자: 유일하지만 대표성 없음
내부/외부 식별자: 자생 or 다른 엔터티 참조
✅ 도출 기준
자주 사용하는 속성 기반
명칭/내용보다는 고유한 코드 중심
과도한 복합키는 지양
| 구분 | 식별자 관계 | 비식별자 관계 |
|---|---|---|
| 목적 | 강한 종속 | 약한 종속 |
| 자식 식별자 | 부모 PK 포함 | 독립적 구성 가능 |
| 표현 | 실선 (IE) | 점선 (IE) |
| 특징 | 부모 없이는 생성 불가 | 선택적으로 관계 가능 |
ERD는 관계 중심,
UML 클래스 다이어그램은 구조 및 의존성 중심
→ 연관(Association) vs 의존(Dependency) 관계 구분
단순히 테이블을 나누는 작업이 아니라,
업무 흐름을 데이터로 추상화하고 명확하게 표현하는 사고 과정이 데이터 모델링의 본질임을 배움.
엔터티/속성/관계/식별자의 정확한 구분과 표기법 이해가 중요함.
✅ 문자열 변환 & f-string
scores = [
{'name':'영수','score':70},
{'name':'영희','score':65},
]
for s in scores:
print(f"{s['name']}의 점수는 {s['score']}점입니다")
✅ 클래스 정의
class Monster():
hp = 100
alive = True
def damage(self, attack):
self.hp -= attack
if self.hp < 0:
self.alive = False
def status_check(self):
print('생존' if self.alive else '사망')
✅ LEFT JOIN vs INNER JOIN 비교
-- 주문 없는 제품 찾기 (정상)
SELECT p.id, p.name
FROM products p
LEFT JOIN orders o ON p.id = o.product_id
WHERE o.id IS NULL;
-- 잘못된 예시 (INNER JOIN + NULL 조건)
SELECT p.id, p.name
FROM products p
INNER JOIN orders o ON p.id = o.product_id
WHERE o.id IS NULL; -- 결과 없음
✅ DATE_SUB + CURDATE()
SELECT COUNT(*)
FROM patients
WHERE birth_date <= DATE_SUB(CURDATE(), INTERVAL 40 YEAR);
👉 현재 날짜로부터 40년 이상 지난 생일을 가진 환자 수 조회
Q1. Python은 가독성이 높고 문법이 쉽다”라는 문장에 증거가 될 사례를 작성해주세요.
for num in [1, 2, 3, 4]:
if num % 2 == 0:
print(num)
👉 누구나 쉽게 읽고 이해할 수 있는 문법
👉 중괄호 대신 들여쓰기, 자연어처럼 읽히는 구조
Q2. 가독성이 좋은 언어를 사용했을때 어떤 이점이 있나요?
협업 시 빠른 이해 가능 → 유지보수 효율적
디버깅 쉬움
코드를 문서처럼 사용 가능
Q3. 데이터 분석가가 Python을 알아야하는 이유는 무엇인가요?
데이터 수집부터 분석, 시각화, 모델링까지 한 언어로 가능
풍부한 라이브러리(pandas, matplotlib 등)
진입장벽이 낮고 자료도 많음
Q4. Python 사용 시 이점?
반복 작업 자동화
시각화 및 모델링 연동 용이
기술 + 분석 + 커뮤니케이션 역량 향상
SQL과 Python이 데이터 분석에서 어떻게 연결되는지 알 수 있었음.
이제는 단순 문법을 넘어서 ‘왜 이걸 쓰는가?’를 이해하며 학습하려고 노력이 필요함.
Python 조건문과 반복문 추가 학습
SQL GROUP BY + 집계함수 복습