Project
[Spring Blog]스프링 블로그 - 논리적 설계, 물리적 설계
빙응이
2024. 3. 25. 17:13
[Spring Blog]스프링 블로그 - 개념적설계 (tistory.com)
[Spring Blog]스프링 블로그 - 개념적설계
📝개념적 설계 요구사항 만들기 게시판에 필요할 것 같은 기능을 나열해보자 회원이 게시글 작성 회원가입 회원이 댓글 쓰기 회원이 추천 해주기 게시글 별 카테고리 게시글에 파일 올리기 🚩
quddnd.tistory.com
📝논리적 설계
논리적 설계 규칙을 적용해보자
🚩 규칙 1. 모든 개체는 릴레이션으로 변환한다.
No. | 개체 | 릴레이션 |
1 | 회원 | 회원(회원아이디, 비밀번호, 전화번호) |
2 | 게시글 | 게시글(게시글번호, 작성자, 제목, 내용, 작성날짜, 조회수, 추천수, 카테고리) |
3 | 파일 | 파일(파일번호, 저장파일이름, 원본파일이름, 파일경로, 파일확장자명) |
🚩 규칙 2. 다대다 관계는 릴레이션으로 변환한다.
No. | 관계 이름 | 관련된 개체 목록 | 관계 유형 | 관계 설명 속성 |
1 | 글을 관리 | 회원(선택), 게시글(필수) | 1:N | |
2 | 댓글을 작성 | 회원(선택), 게시글(선택) | N:M | 댓글 번호, 회원아이디, 내용 |
3 | 추천을 한다 | 회원(선택), 게시글(선택) | N:M | 추천 번호 |
4 | 파일을 첨부한다. | 게시글(선택), 파일(필수) | 1:N |
No. | 개체 | 릴레이션 |
1 | 댓글 | 댓글(댓글 번호, 회원아이디, 게시글번호, 내용) |
2 | 추천 | 추천(추천 번호, 회원아이디, 게시글번호) |
🚩 규칙 3. 일대다 관계는 외래키로 표현한다.
No. | 관계 이름 | 관련된 개체 목록 | 관계 유형 | 관계 설명 속성 |
1 | 글을 관리 | 회원(선택), 게시글(필수) | 1:N | |
2 | 댓글을 작성 | 회원(선택), 게시글(선택) | N:M | 댓글 번호, 회원아이디, 내용 |
3 | 추천을 한다 | 회원(선택), 게시글(선택) | N:M | 추천 번호 |
4 | 파일을 첨부한다. | 게시글(선택), 파일(필수) | 1:N |
No. | 개체 | 릴레이션 |
1 | 게시글 | 게시글(게시글번호, 작성자, 제목, 내용, 작성날짜, 조회수, 추천수, 카테고리, 회원아이디) |
2 | 파일 | 파일(파일번호, 저장파일이름, 원본파일이름, 파일경로, 파일확장자명, 게시글번호) |
🚩 무결성 제약 조건
개체 | 무결성 제약 조건 |
회원 | 1. 회원의 아이디는 고유해야한다.(Unique 제약조건) 2. 비밀번호는 null이 아니어야 한다. 3. 전화번호는 null이 아니어야 한다. |
게시글 | 1. 게시글 번호는 고유해야 한다. 2. 작성자는 등록된 회원이어야 한다.(외래키 제약 조건) 3. 제목과 내용은 null이 아니어야 한다. 4. 작성 날짜는 현재 날짜 및 시간으로 자동 생성되어야 한다. 5. 조회수, 추천수는 0 이상이어야 한다. 6. 카테고리는 유효한 값을 가져야 한다. |
파일 | 1. 파일 번호는 고유해야 한다. 2. 저장 파일 이름, 원본 파일 이름, 파일 경로, 파일 확장자 명은 null이 아니어야 한다. 3. 게시글 번호는 등록된 게시글 번호여야 한다.(외래키 제약 조건) |
추천 | 1. 추천 번호는 고유해야 한다. 2. 회원 아이디와 게시글 번호는 등록된 회원 아이디와 게시글 번호여야 한다.(외래키 제약 조건) |
댓글 | 1. 댓글 번호는 고유해야 한다. 2. 회원 아이디와 게시글 번호는 등록된 회원 아이디와 게시글 번호여야 한다.(외래키 제약 조건) 3. 내용은 null이 아니어야 한다. |
📝물리적 설계
회원
속성 | 칼럼 | 데이터 타입 | 널 허용 여부 | 기본 값 | 키 | 제약조건 |
회원아이디 | member_id | VARCHAR | N | PK | ||
비밀번호 | member_password | VARCHAR | N | |||
전화번호 | member_tel | VARCHAR | N |
게시글
속성 | 칼럼 | 데이터 타입 | 널 허용 여부 | 기본 값 | 키 | 제약조건 |
게시글번호 | board_id | BIGINT | N | PK | ||
회원아이디 | member_id | VARCHAR | N | FK | ||
제목 | board_title | VARCHAR | N | |||
내용 | board_content | VARCHAR | N | |||
조회수 | board_views | BIGINT | N | 0 | ||
추천수 | board_recommend | BIGINT | N | 0 | ||
날짜 | board_updateTime | TIMESTAMP | N | |||
카테고리 | board_categories | VARCHAR | N |
파일
속성 | 칼럼 | 데이터 타입 | 널 허용 여부 | 기본 값 | 키 | 제약조건 |
파일번호 | Attachment_id | BIGINT | N | PK | ||
게시글번호 | board_id | BIGINT | N | FK | ||
원본이름 | Attachment_origin | VARCHAR | N | |||
저장이름 | Attachment_store | VARCHAR | N | UNIQUE | ||
파일경로 | Attachment_path | VARCHAR | N | |||
파일확장자 | Attachment_extansion | VARCHAR | N |
댓글
속성 | 칼럼 | 데이터 타입 | 널 허용 여부 | 기본 값 | 키 | 제약조건 |
댓글번호 | comment_id | BIGINT | N | PK | ||
게시글번호 | board_id | BIGINT | N | FK | ||
회원아이디 | member_id | VARCHAR | N | FK | ||
내용 | comment_content | VARCHAR | N |
추천
속성 | 칼럼 | 데이터 타입 | 널 허용 여부 | 기본 값 | 키 | 제약조건 |
추천번호 | recommend_id | BIGINT | N | PK | ||
게시글번호 | board_id | BIGINT | N | FK | ||
회원아이디 | member_id | VARCHAR | N | FK |