Skip to content

DB모델링 #2

@metaapple

Description

@metaapple

🌸 ### DB모델링 개념

Image

Image

Image


🌸 ### 예시) 카페에서 고객이 메뉴를 주문하고 결제하는 시스템을 만드는 경우

개념적 모델링 :
✔️ 목적: "어떤 업무 개념이 있는지?"를 파악
✔️ 형태: 업무 중심 + 관계 위주


- 주요 개체(엔티티) : 고객 (Customer), 메뉴 (Menu), 주문 (Order)
- 관계(Relationship) : 고객은 주문을 한다,  주문은 메뉴를 포함한다

논리적 모델링
✔️ 목적: 개념을 구조화(테이블 형태)
✔️ 형태: 엔티티 → 테이블, 속성 → 컬럼


- 고객 테이블 (Customer) : 고객 ID (PK), 이름, 전화번호
- 메뉴 테이블 (Menu) : 메뉴 ID (PK), 메뉴명, 가격
- 주문 테이블 (Order) : 주문 ID (PK), 고객 ID (FK), 주문 일시
- 주문 상세 테이블 (OrderItem) : 주문 ID (FK), 메뉴 ID (FK), 수량

물리적 모델링
✔️ 목적: 실제 DB에 맞게 구현(mysql8이면 이 버전에 맞게 구현)
✔️ 형태: 성능, 저장 공간 크기, 타입 고려하여 데이터 타입 설정, 인덱스 추가, 제약조건 정의


CREATE TABLE Customer (
  customer_id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50),
  phone VARCHAR(20)
);

CREATE TABLE Menu (
  menu_id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(100),
  price DECIMAL(6,2)
);

CREATE TABLE Order (
  order_id INT AUTO_INCREMENT PRIMARY KEY,
  customer_id INT,
  order_date DATETIME,
  FOREIGN KEY (customer_id) REFERENCES Customer(customer_id)
);

CREATE TABLE OrderItem (
  order_id INT,
  menu_id INT,
  quantity INT,
  PRIMARY KEY (order_id, menu_id),
  FOREIGN KEY (order_id) REFERENCES `Order`(order_id),
  FOREIGN KEY (menu_id) REFERENCES Menu(menu_id)
);

👉 모델링 사이트 : https://www.erdcloud.com

🔴 회원가입 후, 사용

Image

🔴 table생성 --> 각 칸의 이동은 엔터
Image

🔴 i를 클릭하면 좀더 세부적으로 설정 가능
Image

Image

🔴 export를 누르면, 화면을 png로 저장할 수도 있고, 표를 excel로 저장할 수도 있고, 자동 생성된 sql문으로 저장할 수도 있음.
🔴 import는 이미 생성된 sql문으로 erd를 그릴 수 있음.

Image

CREATE TABLE `member` (
	`memberId`	char(100)	NOT NULL,
	`pw`	char(10)	NULL,
	`name`	varchar(100)	NOT NULL	COMMENT '회원이름',
	`tel`	varchar(100)	NULL
);

CREATE TABLE `buy` (
	`Key`	int	NOT NULL,
	`memberId2`	char(100)	NOT NULL,
	`productName`	varchar(100)	NULL,
	`price`	int	NULL
);

CREATE TABLE `board` (
	`boardId`	int	NOT NULL	COMMENT '게시판id',
	`title`	varchar(100)	NULL,
	`content`	text	NULL,
	`memberId`	char(100)	NOT NULL
);

ALTER TABLE `member` ADD CONSTRAINT `PK_MEMBER` PRIMARY KEY (
	`memberId`
);

ALTER TABLE `buy` ADD CONSTRAINT `PK_BUY` PRIMARY KEY (
	`Key`,
	`memberId2`
);

ALTER TABLE `board` ADD CONSTRAINT `PK_BOARD` PRIMARY KEY (
	`boardId`
);

ALTER TABLE `buy` ADD CONSTRAINT `FK_member_TO_buy_1` FOREIGN KEY (
	`memberId2`
)
REFERENCES `member` (
	`memberId`
);


🧾 ERDCLOUD 결과물


Image

test (2).xlsx
Image

test-sql.txt


Image

🔴 refresh all : 갱신된 내용 반영

Image

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentation

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions