이 글은 ERD cloud 사이트를 활용해서
MySQL 테이블 설계하는 방법 에 대해 다룬 글입니다.
ERD cloud 홈페이지 주소 들어가서 회원가입 및 로그인 해주세요.
ERD란?
Entity Relationship Diagram
(개체-관계 모델)
테이블간의 관계를 설명해주는 다이어그램입니다.
예시)
혹시 심심하신 분을 위하여 미션을 드리겠습니다.
ERD cloud 홈페이지에서
아래 조건을 만족하도록 ERD를 그리고
정답을 확인해 보세요 ^^
<문제> 1. 회원 테이블, 상품 테이블, 구매 테이블 작성한다. 2. 회원 테이블의 컬럼은 (id, 회원아이디, 이름, 주소, 휴대폰번호, 생성일, 수정일)이 있다. 3. 상품 테이블의 컬럼은 (id, 이름, 수량, 가격, 생성일, 수정일)이 있다. 4. 구매 테이블의 컬럼은 (id, 회원id, 상품id, 수랭, 생성일, 수정일)이 있다.
ERD cloud에는 SQL 내보내기 기능
이 있어
우리가 작성한 ERD 다이어그램을 이용해서
MySQL 테이블을 생성할 수 있습니다.
이렇게 SQL문장이 생성됩니다.
방금 나온 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;
실행 결과 : 테이블이 잘 생성 되었군요 ^^
직접 데이터를 넣어서 확인 해보겠습니다.
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');
실행 결과 : 요렇게 데이터가 잘 들어가는 것을 볼 수 있습니다.
꼼꼼한 수강 일지 잘 봤습니다~! 앞으로도 제니아가 응원하고 있겠습니다^.^