학습 기록/데브코스 웹 풀스택 4기

ERD를 바탕으로 데이터베이스 생성하기

romi__ 2024. 8. 26. 12:31

/date 24.08.26.

 

어제 과제하면서 이런 글을 올렸습니다.

 

ERD에 대한 이해와 데이터베이스 모델링

/date 24.08.25.  오늘의 목표는~ 데이터베이스 관계 다이어그램(ERD)을 생성하고 이를 바탕으로 데이터베이스를 직접 설계하여 간단한 쿼리를 작성하는 것! 가상의 공연 예매 사이트를 구축한다고

romiwaves.tistory.com

 

어제 작성하였던 ERD에서 살짝 수정을 거쳤고, 이를 바탕으로 데이터베이스를 생성한 다음 해당 테이블에서 사용할 수 있는 입력, 수정, 조회 SQL문을 작성하는 것이 과제입니다.

 

mariadb 데이터베이스 생성하기

mariadb를 실행해서 showtime이라는 이름의 데이터베이스를 만들어 주었습니다. 그럼 이제 테이블을 하나씩 만들어 주겠습니다.

 

먼저 User 테이블을 만들어 주었습니다.

 

show_img 테이블을 만들어 주었습니다. 해당 테이블의 PK인 img_id가 show_info에 FK로 들어가야 해서 순서를 앞당겨 먼저 만들어 주었습니다.

 

다음으론 show_info 테이블을 만들어 주었습니다. img_id를 외래키로 참조하는 것도 잊지 않았습니다.

 

다시 show_img 테이블로 돌아와서, show_info를 외래키로 참조하는 컬럼을 하나 추가해 주었습니다. 잘 추가되었는지 궁금해서 SHOW COLUMNS FROM show_img; 명령어로 확인해 보았습니다. 잘 들어왔군요! 참고로 DESCRIBE (테이블명)으로도 확인 가능합니다. 그럼 이제 마지막으로 남은 order 테이블을 생성해 주겠습니다.

 

어라... 왜 안 될까요? 혹시나 오타가 있었을까 싶어서 한 번 더 시도해 보았지만 동일한 에러 문구를 띄우며 테이블이 생성되지 않았습니다. 어떻게 된 일인지 검색해 본 결과, 제가 테이블 이름으로 사용하였던 order가 SQL 내에서 명령어로 사용되기 때문에 테이블 이름으로 사용하려면 'order'와 같이 따옴표 안에 묶어서 넣어 줘야 한다고 합니다. 저번에도 한 번 이런 문제로 검색을 했던 것 같은데, 또 동일한 부분에 걸려 넘어졌네요. 따옴표를 붙여도 헷갈릴 수 있으니 order_info로 테이블 이름을 바꿔서 생성하겠습니다.

 

그랬더니 이번엔 무사히 생성되었습니다. SHOW TABLES; 명령어로 확인해본 결과 이제까지 생성한 테이블이 잘 있군요!

 

 

 

SQL문 작성하기

테이블에서 사용할 수 있는 입력, 수정, 조회 SQL 예문을 작성해 보도록 하겠습니다.

 

상황 SQL문
사용자 kim dev가 회원가입, 사용자 정보를 user 테이블에 삽입 INSERT INTO user
VALUES (1, kim dev, kimdev@dev.com, devcourse11);
사용자 kim dev가 비밀번호를 변경 UPDATE user SET user_pw = 'pwdevkim99' WHERE username = 'kim dev';
사용자 kim dev가 예매한 공연의 총 금액 조회 SELECT total_price FROM order_info
WHERE user_id ='1';
종료된 공연인 LIZZIE의 이미지 삭제 DELETE FROM show_img WHERE show_id = 'lizzie2023';

 

📌 auto increment로 지정해둔 컬럼 값은 (자동으로 값을 할당하므로) 직접 데이터를 넣지 않아도 됩니다. 저는 SQL문을 작성하는 연습을 하며 활용해 보기 위해 임의로 지정해서 직접 넣었습니다.

 

 

 

아래는 사족입니다.

  • 내가 작성한 ERD가 최적의 형태라고 생각되지 않는다. 나는 ERD라는 것을 과제 파일을 통해 처음 접했고, 혼자 공부하며 쌓은 개념 중에 오개념도 있을 수 있다고 생각한다. 무엇보다 아쉬운 점은 어떤 ERD가 잘 짜인 ERD이고 그걸 데이터베이스로 구현한다고 생각했을 때 최고의 효율을 낼 수 있도록 하려면 어떻게 해야 하는지 알지 못해 그런 부분을 적용해 볼 수 없었다는 것이다. 앞으로 추가적인 공부를 통해 해당 부분 지식을 보충할 생각이다.
  • 1에 덧붙여) 데이터베이스 관리에 좀 더 정을 붙일 수 있으면 좋겠지만 아직까진 잘 모르겠다. 뒤에서 사부작거리는 이런 일들이 나에게 흥미를 불러일으키질 못한다.
  • 피드백 시간에 잘 짜여진 ERD에 대해 알려주셨으면 좋겠다.