ERD(Entity Relationship Diagram) 프로그램
DB의 구조를 한눈에 볼 수 있도록 만든 프로그램
ERD 프로그램은 데이터베이스의 구조를 시각적으로 표현하는 도구입니다. 이러한 프로그램들은 데이터베이스의 테이블, 열, 관계 등을 그래픽으로 나타내어 복잡한 데이터 구조를 쉽게 이해하고 설계할 수 있게 도와줍니다. 대표적인 ERD 프로그램으로는 다음과 같은 것들이 있습니다:
Aquery: 웹 기반의 ERD프로그램으로 테이블 제한이 있지만 사용 방법이 쉽고 UI가 간편하다는 장점이 있습니다.
MySQL Workbench: MySQL 데이터베이스용 ERD를 설계, 생성 및 관리할 수 있는 통합 도구입니다.
Draw.io (현재는 diagrams.net): 무료 온라인 다이어그램 도구로, 기본적인 ERD를 손쉽게 그릴 수 있습니다.
(1) Draw.io
(2) MySQL workbench ERD
MySQL workbench ERD
(1) 상단의 Database → Reverse Engineer
Continue를 클릭하면 되는데, 불러오고자 하는 데이터 베이스만 선택을 해주면 됩니다.
(3) Aquery
ERD 연습
에어비앤비
테이블 정보
Users: 사용자 정보를 저장합니다.
Properties: 숙소 정보를 저장합니다.
Bookings: 예약 정보를 저장합니다.
Reviews: 사용자에 의한 숙소 리뷰를 저장합니다.
Messages: 사용자 간의 메시지를 저장합니다.
ERD 설계
Users와 Properties는 서로 관계가 있으며, 한 사용자가 여러 숙소를 등록할 수 있습니다.
Users와 Bookings는 서로 관계가 있으며, 한 사용자가 여러 예약을 할 수 있습니다.
Properties와 Bookings는 서로 관계가 있으며, 한 숙소에 여러 예약이 있을 수 있습니다.
Properties와 Reviews는 서로 관계가 있으며, 한 숙소에 여러 리뷰가 있을 수 있습니다.
Users와 Messages는 서로 관계가 있으며, 사용자 간에 여러 메시지가 오갈 수 있습니다.
테이블 생성 SQL 쿼리
CREATE TABLE Users (
userID INT AUTO_INCREMENT PRIMARY KEY,
userName VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
createDate TIMESTAMP
);
CREATE TABLE Properties (
propertyID INT AUTO_INCREMENT PRIMARY KEY,
userID INT,
title VARCHAR(255) NOT NULL,
description TEXT,
address VARCHAR(255),
pricePerNight DECIMAL(10, 2),
createDate TIMESTAMP,
FOREIGN KEY (userID) REFERENCES Users(userID)
);
CREATE TABLE Bookings (
bookingID INT AUTO_INCREMENT PRIMARY KEY,
propertyID INT,
userID INT,
checkInDate DATE,
checkOutDate DATE,
totalPrice DECIMAL(10, 2),
bookingDate TIMESTAMP,
FOREIGN KEY (propertyID) REFERENCES Properties(propertyID),
FOREIGN KEY (userID) REFERENCES Users(userID)
);
CREATE TABLE Reviews (
reviewID INT AUTO_INCREMENT PRIMARY KEY,
propertyID INT,
userID INT,
rating INT,
comment TEXT,
reviewDate TIMESTAMP,
FOREIGN KEY (propertyID) REFERENCES Properties(propertyID),
FOREIGN KEY (userID) REFERENCES Users(userID)
);
CREATE TABLE Messages (
messageID INT AUTO_INCREMENT PRIMARY KEY,
senderID INT,
receiverID INT,
messageText TEXT,
sendDate TIMESTAMP,
FOREIGN KEY (senderID) REFERENCES Users(userID),
FOREIGN KEY (receiverID) REFERENCES Users(userID)
);
테이블 작업 이후, MySQL Workbench로 reverse engineering 작업
 프로그램_files/Untitled.png)
 프로그램_files/Untitled(1).png)
 프로그램_files/Untitled(2).png)
 프로그램_files/Untitled(3).png)
 프로그램_files/Untitled(4).png)
