라벨이 데이터베이스인 게시물 표시

GCP BigQuery connection(DBMS)

이미지
사진1) Big Query화면 구글 클라우드에서 Big Query화면에 들어가서 Add를 선책합니다. 사진2) 외부연결 이번에는 GCP의 SQL(My-SQL)에 접속하는것이 목적이기 때문에 'connections ~ '을 선택한다. 사진3) 외부연결 설정 사진4) 연결할 DB확인 사진5) 연결설정 완료 사진 4번에서 해당 DBMS의 'connection name'을 확인하고 사진5번에 작성을 마무리 합니다. 사진6) 연결 완료 사진7) 쿼리 실행 사진8) 쿼리 실행중 에러 사진6번과 7번에서 실행해도 사진8번과 같이 에러가 발생되는 경우가 있습니다. 에러의 원인은 해당 DBMS에서 연결도중에 연결을 끊어버렸다는 것입니다. 하나의 해결책으로 해당 Big Query가 DBMS에 접근할 권한이 없는 것입니다. 사진9) 서비스 계정 ID 확인 사진10) IAM계정 추가 사진11) 서비스 계정 등록 사진12) Cloud SQL Client선택 해당 Big Query의 service account ID(사진 9)를 확인하고 IAM계정을 추가합니다. 권한은 'Cloud SQL Client'(사진12)으로 추가합니다. 사진13) 쿼리 실행 완료 제대로 동작된다면 사진 13처럼 쿼리를 입력하고 정상적으로 데이터를 불러오는 것을 알수 있습니다. 

SQL 관계도 Many to Many(다대다 관계)

이미지
안녕하세요. 알렉스입니다. 이번에는 DB의 관계도중 하나인 다대다(Many to Many)에 대해서 알아보도록 하겠습니다.   다대다 관계는 테이블에서 유저와 댓글과의 관계라고 생각할수 있습니다.  사진1) 다대다 관계 다대다 관계에서 중요한 것은 중간에 Join Table이 있다는 것입니다. 2개의 테이블이 다대다 관계를 가질때 연결지점인 JoinTable이 존재해서 users와 JoinTable, comment와 JoinTable간 일대다 관계를 만들어 줍니다.  이러는 이유는 Table간의 중복성을 제거하기 위해서 입니다.   id full_name created_at comment 1 alex 2021.12.15 Hi 2 alex X How 3 jhon 2021.12.16 You 4 alex X Me 5 jhon X End 위의 표를 보면 유저와 그 유저가 작성한 코멘트를 한번에 보여주는 테이블 입니다. 일단 중복이 된것도 문제 이지만 'created_at'은 유저 생성 날짜인데 여러번 반복됨을 알수 있습니다. 이렇게 되면 해당 데이터를 저장하기 위해서 저장 용량이 늘어나기도 하지만 필요한 데이터를 조회하기가 상당이 어렵습니다. 사진2) 분리된 테이블 사진 2처럼 테이블을 분리하면 중복을 제거할수 있을 분더러 위의 표보다 보기가 수월합니다. 예로 들어 1번 유저가 얼마나 코멘트를 작성했는지 알아볼려면 JoinTable의 userId칼럼에서 1만 찾고 그에 대응하는 commentId로 comment 테이블에서 찾으면 됩니다.