반응형
| 실습내용: view, content, insert, id.html 4가지 웹페이지 파일 모델링을 실시하고, 합쳐서 모델링 한다 |
view.html![]() 게시글 목록이나 상세 화면에서 작성자가 누구인지 보여줘야 한다. 이작성자 정보는 member 테이블에 이미 있으므로 ID 값을 가져와 연결하는 외래키가 형성된다 content.html ![]() insert.html ![]() 번호는 새로운 글이 생성될 때마다 부여되는 고유 번호이다. 속성에서 제목과 내용은 사용자가 직접 입력하는 원천 데이터 이다 id.html ![]() ID는 사용자를 중복 없이 식별할 수 있는 고유한 값이다.이름이나 별명은 중복될 수 있지만, ID는 시스템 내에서 유일해야 하므로 PK가 된다 |
BOARD 파일 (파일 통합 과정)

| 왜 결과물이 딱 2개의 상자(테이블)로 합쳐지는가? 데이터베이스 정규화의 핵심은 **"같은 성격의 데이터는 한 곳에 모으고, 중복을 제거하는 것"** 회원 관련 정보: id.html에서 정의된 모든 속성(아이디, 패스워드, 주소 등)은 '사용자'라는 하나의 개체를 설명한다. 따라서 member 테이블 1개로 합쳐친다. 게시글 관련 정보: view.html, content.html, insert.html은 각각 목적은 다르지만, 다루는 대상은 모두 '게시글'이다. insert에서 입력한 '제목'이 view와 content에서 출력되는 동일한 데이터이다. 데이터 중복을 막기 위해 모든 게시글 관련 속성을 post 테이블 1개로 통합한다. 결론: 관리 대상이 '사람(회원)'과 '글(게시글)' 두 종류뿐이므로 상자는 2개가 된다 |
BOARD 파일 (파일 통합 과정) - 최종
![]() (이렇게 모델링을 많이 함) 1. 파일별 속성 구성 및 PK/FK 형성 이유 각 파일은 데이터베이스 관점에서 입력(Insert) 또는 **출력(Select)**의 단위이다 |
| 참고사항 1.왜 게시글(post)이 자식인가? 1) 데이터베이스에서 부모는 정보를 제공하는 쪽, 자식은 그 정보를 받아서 참조하는 쪽이다 2) 게시글은 '누가 썼는지' 알기 위해 회원의 id를 빌려와야 한다 3) 회원(부모)이 먼저 존재해야 게시글(자식)의 작성자 칸을 채울 수 있으므로 게시글이 자식이 된다 2. 왜 비식별 관계(점선)인가? ERwin에서 **식별 관계(실선)**와 **비식별 관계(점선)**를 나누는 기준은 "자식의 PK에 부모의 PK가 포함되는가?"이다 1) PK 독립성: 게시글의 PK는 번호 이다. 번호는 회원 ID가 없어도 1, 2, 3... 순서대로 고유하게 존재할 수 있다. 즉, 게시글의 존재 근거(PK)가 회원 ID에 묶여있지 않다 2) 의존성 판단: "회원이 없어도 시스템은 존재한다"는 의미는, 만약 회원이 한 명도 가입하지 않은 상태여도 post 테이블의 구조(번호, 제목, 내용 등)는 깨지지 않고 독립적으로 유지될 수 있다는 뜻이다 3) 결론: 부모의 PK(id)가 자식의 일반 속성(FK)으로만 들어가기 때문에 **비식별 관계(점선)**로 표시한다 3. 내용 상자에 왜 외래키가 들어와야 하는가? 1) 내용 상자는 혼자서 존재할 수 없다. 반드시 어떤 게시글의 본문인지를 가리켜야 한다 2) 만약 외래키가 없다면: 내용 상자에 글을 써도, 이게 1번 게시글의 내용인지 100번 게시글의 내용인지 연결할 방법이 없다 3) 따라서: 게시글 상자의 글번호를 복사해서 내용 상자로 가져와야 하며, 이것이 바로 **외래키(FK)**의 역할이다 핵심 (1) 게시글 상자: 글번호를 새로 만든다 (PK) (2) 내용 상자: 게시글의 글번호를 그대로 빌려온다 (FK) (3) 동시에: 빌려온 그 번호를 자기의 고유 번호로도 쓴다 (PK) |
| 요약 1. 파일 통합: 데이터의 성격이 '회원'과 '게시글'로 명확히 구분되므로 2개의 테이블로 압축됨 2. PK 선정: 각 개체를 구별하는 유일한 값(ID, 번호)을 PK로 설정 3. FK 연결: 게시글에서 작성자를 식별하기 위해 회원 ID를 참조함 4. 점선 사용: 게시글의 고유번호가 회원 ID로부터 만들어지는 것이 아니기 때문(독립적 PK) |
| 구분 | view (게시글) | content (내용) |
| 빌려오는 값 | 회원의 id | 게시글의 글번호 |
| 자기만의 PK | 있음 (글번호) | 없음 (부모 번호를 그대로 씀) |
| 관계 종류 | 비식별 관계 (점선) | 식별 관계 (실선) |
| 논리 | 회원이 없어도 글 번호는 독립적임 | 게시글 번호가 없으면 내용도 존재 불가함 |
'Infra & Security Eng > Database Engineering' 카테고리의 다른 글
| [SQL 인젝션] - SQL 테이블 출력 전체 명령어 리스트 (0) | 2026.04.03 |
|---|---|
| 인증 게시판 실습으로 이해하는 세션, SQL Injection, 3계층 구조 정리 (0) | 2026.04.02 |
| 페이지 구현 파일(id,conn, co_in, sc_vi.php) 파일 관계 구조, 패턴 설명, 명령어 해석하기 (0) | 2026.04.01 |
| conn,i d, check, logout, st_in, st_vi 파일을 활용한 웹 데이터베이스 연동 프로그래밍과 해석해보기 (0) | 2026.03.31 |
| ERwin 차량운행일지 정규화 3단계 실습_0327_1 (0) | 2026.03.27 |




