📕 들어가며


이 글은 ERD cloud 사이트를 활용해서

MySQL 테이블 설계하는 방법 에 대해 다룬 글입니다.








📕 본론


✏️1. ERD cloud 홈페이지 접속


ERD cloud 홈페이지 주소 들어가서 회원가입 및 로그인 해주세요.















✏️2. ERD를 그립니다.


ERD란?

Entity Relationship Diagram (개체-관계 모델)
테이블간의 관계를 설명해주는 다이어그램입니다.




예시)












혹시 심심하신 분을 위하여 미션을 드리겠습니다.

ERD cloud 홈페이지에서
아래 조건을 만족하도록 ERD를 그리고
정답을 확인해 보세요 ^^

<문제>
1. 회원 테이블, 상품 테이블, 구매 테이블 작성한다.   
2. 회원 테이블의 컬럼은 (id, 회원아이디, 이름, 주소, 휴대폰번호, 생성일, 수정일)이 있다.
3. 상품 테이블의 컬럼은 (id, 이름, 수량, 가격, 생성일, 수정일)이 있다.
4. 구매 테이블의 컬럼은 (id, 회원id, 상품id, 수랭, 생성일, 수정일)이 있다.

정답












✏️3. DDL 추출


ERD cloud에는 SQL 내보내기 기능이 있어

우리가 작성한 ERD 다이어그램을 이용해서
MySQL 테이블을 생성할 수 있습니다.



이렇게 SQL문장이 생성됩니다.















✏️4. MySQL 접속해서 테이블 생성해보기

방금 나온 SQL문과

Dbeaver와 같은 DB 툴을 이용하면

테이블을 쉽게 생성할 수 있습니다.




ERD cloud에서 받은 SQL문 입니다.

DROP TABLE IF EXISTS `member`;

CREATE TABLE `member` (
	`id`	BIGINT NOT NULL,
	`member_id`	VARCHAR(30)	NULL,
	`name`	VARCHAR(100)	NULL,
	`address`	VARCHAR(100)	NULL,
	`phone_number`	VARCHAR(30)	NULL,
	`create_date`	DATETIME	NULL	DEFAULT CURRENT_TIMESTAMP,
	`update_date`	DATETIME	NULL	DEFAULT CURRENT_TIMESTAMP
);

DROP TABLE IF EXISTS `product`;

CREATE TABLE `product` (
	`id`	BIGINT	NOT NULL,
	`name`	VARCHAR(50)	NULL,
	`qty`	INT	NULL,
	`price`	INT	NULL,
	`create_date`	DATETIME	NULL	DEFAULT CURRENT_TIMESTAMP,
	`update_date`	DATETIME	NULL	DEFAULT CURRENT_TIMESTAMP
);

DROP TABLE IF EXISTS `buy`;

CREATE TABLE `buy` (
	`id`	BIGINT	NOT NULL,
	`member_id`	BIGINT	NOT NULL,
	`product_id`	BIGINT	NOT NULL,
	`qty`	VARCHAR(255)	NULL,
	`create_date`	VARCHAR(255)	NULL,
	`update_date`	VARCHAR(255)	NULL
);

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

ALTER TABLE `product` ADD CONSTRAINT `PK_PRODUCT` PRIMARY KEY (
	`id`
);

ALTER TABLE `buy` ADD CONSTRAINT `PK_BUY` PRIMARY KEY (
	`id`
);


ALTER TABLE `member`  MODIFY COLUMN id bigint auto_increment NOT NULL;
ALTER TABLE product MODIFY COLUMN id bigint auto_increment NOT NULL;
ALTER TABLE buy MODIFY COLUMN id bigint auto_increment NOT NULL;



ALTER TABLE `buy` ADD CONSTRAINT `FK_member_TO_buy_1` FOREIGN KEY (
	`member_id`
)
REFERENCES `member` (
	`id`
);

ALTER TABLE `buy` ADD CONSTRAINT `FK_product_TO_buy_1` FOREIGN KEY (
	`product_id`
)
REFERENCES `product` (
	`id`
);





AUTO_INCREMENT 기능은 없어서
중간의 이 코드는 제가 수기로 넣어주었습니다.

ALTER TABLE `member`  MODIFY COLUMN id bigint auto_increment NOT NULL;
ALTER TABLE product MODIFY COLUMN id bigint auto_increment NOT NULL;
ALTER TABLE buy MODIFY COLUMN id bigint auto_increment NOT NULL;













실행 결과 : 테이블이 잘 생성 되었군요 ^^













✏️5. TEST로 데이터 넣어보기


테이블이 정말로 잘 생성 되었는지

직접 데이터를 넣어서 확인 해보겠습니다.




INSERT INTO testdb.product (name,qty,price,create_date,update_date) VALUES
	 ('carrot',15,1000,'2023-02-06 13:54:11','2023-02-06 13:54:11'),
	 ('apple',105,500,'2023-02-06 13:54:11','2023-02-06 13:54:11'),
	 ('pear',35,800,'2023-02-06 13:54:11','2023-02-06 13:54:11'),
	 ('orange',55,1000,'2023-02-06 13:54:11','2023-02-06 13:54:11'),
	 ('honey',15,3000,'2023-02-06 13:54:11','2023-02-06 13:54:11'),
	 ('pine',25,5000,'2023-02-06 13:54:11','2023-02-06 13:54:11'),
	 ('mellon',15,10000,'2023-02-06 13:54:11','2023-02-06 13:54:11');
	 
	
INSERT INTO testdb.`member` (member_id,name,address,phone_number,create_date,update_date) VALUES
	 ('TWC','트와이스','Seoul','010-1111-1111','2023-02-06 14:04:08','2023-02-06 14:04:08'),
	 ('BLK','블랙핑크','Seoul','010-1111-2222','2023-02-06 14:04:08','2023-02-06 14:04:08'),
	 ('WMN','여자친구','Daegu','010-1111-3333','2023-02-06 14:04:08','2023-02-06 14:04:08'),
	 ('OMY','오마이걸','Daegu','010-1111-4444','2023-02-06 14:04:08','2023-02-06 14:04:08'),
	 ('GRL','소녀시대','Daegeon','010-1111-5555','2023-02-06 14:04:08','2023-02-06 14:04:08'),
	 ('ITZ','잇지','Daegeon','010-2222-1111','2023-02-06 14:04:08','2023-02-06 14:04:08'),
	 ('RED','레드밸벳','Daegeon','010-2222-1111','2023-02-06 14:04:08','2023-02-06 14:04:08'),
	 ('APN','에이핑크','Busan','010-2222-2222','2023-02-06 14:04:08','2023-02-06 14:04:08'),
	 ('SPC','우주소녀','Junnam','010-2222-2222','2023-02-06 14:04:08','2023-02-06 14:04:08');
	 
	
INSERT INTO testdb.buy (member_id,product_id,qty,create_date,update_date) VALUES
	 (1,1,10,'2023-02-07 08:24:33','2023-02-07 08:24:33'),
	 (1,2,30,'2023-02-07 08:29:48','2023-02-07 08:29:48'),
	 (2,1,10,'2023-02-07 08:29:58','2023-02-07 08:29:58'),
	 (5,2,10,'2023-02-07 08:30:07','2023-02-07 08:30:07'),
	 (6,7,5,'2023-02-07 08:30:30','2023-02-07 08:30:30'),
	 (3,3,4,'2023-02-07 08:30:39','2023-02-07 08:30:39'),
	 (3,5,10,'2023-02-07 08:30:50','2023-02-07 08:30:50'),
	 (4,4,10,'2023-02-07 08:38:40','2023-02-07 08:38:40'),
	 (5,2,10,'2023-02-07 08:38:40','2023-02-07 08:38:40'),
	 (4,1,20,'2023-02-07 08:38:40','2023-02-07 08:38:40'),
	 (6,7,10,'2023-02-07 08:38:40','2023-02-07 08:38:40'),
	 (9,4,10,'2023-02-07 08:38:40','2023-02-07 08:38:40'),
	 (7,2,30,'2023-02-07 08:38:40','2023-02-07 08:38:40'),
	 (1,7,20,'2023-02-07 08:38:40','2023-02-07 08:38:40');













실행 결과 : 요렇게 데이터가 잘 들어가는 것을 볼 수 있습니다.

profile
1.01^365

1개의 댓글

comment-user-thumbnail
2023년 2월 20일

꼼꼼한 수강 일지 잘 봤습니다~! 앞으로도 제니아가 응원하고 있겠습니다^.^

답글 달기