코드스테이츠 백엔드 33일차 | SQL, 데이터베이스

hyoreal·2022년 8월 8일
0

CodeStates

목록 보기
24/32

주말내내 SQL을 추가적으로 공부했더니 오늘 따라가는데 무리가 없는것같다! 아주 뿌듯하고 좋다!!

SQL을 사용해 ERD 설계하기

위 스키마와 동일한 ERD를 쿼리문을 통해 만들어야한다.
테이블은 user와 content가 있다.

FieldTypeNullKeyDefaultExtra
idintNoPKnullauto_increment
namevarchar(255)Nonull
emailvarchar(255)Nonull

user table 구조

FieldTypeNullKeyDefaultExtra
idintNoPKnullauto_increment
titlevarchar(255)Nonull
bodyvarchar(255)Nonull
created_attimestampNoCURRENT_TIMESTAMPDEAFAULT_GENERATED
userIdintYesFKnull

content table 구조

조건
1.위와 같은 테이블과 컬럼이 필요
2.Primary Key는 auto_increment이다
3.Foreign Key 를 제외하고는 모두 NOT NULL
4.created_at과 같은 시간/날짜 정보는 timestamp이고, default current_timestamp 이다.

위와 같은 스키마를 위해 쿼리문을 작성하던 도중 외래키를 어떻게 적용해야하는지에 대한 고민이 있었다.
책도 찾아봤지만 정확하게 나와있지 않아 고민하던 도중 구글을 하다 찾아냈다.

CREATE TABLE 테이블명 (
... ,
FOREIGN KEY (필드명) REFERENCES 테이블명 (필드명)
ALTER TABLE 테이블명
ADD
FOREIGN KEY (필드명) REFERENCES 테이블명 (필드명)

등 과 같은 방법들이 있었고 나는 첫번째 방법을 택했다.

내가 작성한 쿼리문은 위와 같았고 결과는

이처럼 의도한대로 잘 나온것같았다.

이번엔 작성한 쿼리문에서 변경사항을 수정하고 추가된 테이블을 쿼리문으로 작성해 ERD를 제작한다.

content테이블은 변경사항이 없고 category, content_category,role 테이블이 생겼고 user테이블은 변경됐다.

내가 작성한 쿼리문은 밑과 같다.

나온 결과가 레퍼런스 자료와 뭔가 달랐다.

ERD를 들여다보니 문제점을 금방 발견했다.
분명 content 테이블의 변경사항이 없다 기재돼있었으나 나는 다른 예시 테이블을 보고 content 테이블로 착각해 만든거다.
그래서 급히 다시 쿼리문을 작성했다.

위와 같은 쿼리문으로 재작성한 결과

위처럼 올바르게 나왔다.


사실 SQL이 다른것들에 비해 너무 어렵게 느껴졌었는데 포기하지않고 공부했더니 이렇게 쉬웠었나 하는 느낌이 들었다. 최근 너무 어려운 나머지 지쳐가고있었지만 이해가 되는 순간부터 갑자기 또다시 너무나도 재밌어졌다!! 앞으로 spring은 더 어려울거라며 엔지니어님께서 겁을 주셨지만 나는 끝까지 해낼거다!!!

profile
좌충우돌 코린이 성장기

0개의 댓글