2022.12.02.FRI

ronglong·2022년 12월 2일
0

코드스테이츠 Day32

< DB설계, 스키마 디자인 >

  • 스키마 : 데이터베이스를 구성하는 레코드의 크기, 키(key)의 정의, 레코드와 레코드의 관계, 검색 방법 등을 정의한 것.
  • 관계형 데이터 베이스 RDB
    - 테이블 사이의 관계 : 1:1, 1:N, N:M, self referencing
    • 스키마 디자인에서는 보통 일대다(1:N) 관계를 가지며, 다대다의 경우는 SQL join 명령어를 통해 중간에 연결 테이블(조인 테이블)을 하나 더 만들어서 N:1 + 1:N 의 관계로 만듦.
    • 조인 테이블도 외래키 뿐만 아니라 기본키를 가져야함.
  • SELECT문 실행 순서
    - FROM, WHERE, GROUP BY, HAVING, SELECT, ORDER BY

< 기타 >

  • SQL join 설명 사이트
    https://sql-joins.leopard.in.ua/
  • 프라이머리 키 - 멀티 컬럼으로 가능. 하나의 테이블에 하나의 프라이머리 키.
  • 다대다 관계는 조인테이블 꼭 필요.
  • Inner , left join을 중점적으로 공부하기
  • Join 명령어 기준으로 왼쪽이 left, 오른쪽이 right
  • noSQL은 수직적 확장도 가능.
  • 스키마 작성 사이트
    https://dbdiagram.io/

< 오늘 해 본 스키마 과제 >

< 느낀 점 >
이번 과제도 약간 맨땅에 던져진 기분으로 시작.. ㅋㅋㅋ
처음에 아예 감을 못 잡았다가, 사이트에 있는 예시 보고 참고해서 조금씩 만들어보자,, 하고 테이블부터 만들었다. 그러고 나서 관계도 하나 하나씩 이어봄,,
여전히 저렇게 하는 게 맞는지는 모르겠는 상태지만.. ㅋㅋ
다른 동기들이 만들어서 올린 걸 보니 형태는 비슷하길래, 아주 방향이 틀리지는 않았다고 생각한다. DB 설계 어렵네,,

오늘 아침 데일리 코딩은 문제가 갑자기 어려워져서 못 풀었음⭐️
밑엔 나의 작살난 코드,, 너무 작살나서 테스트도 안 돌아감 ㅋㅋㅋㅋ
다음주에 다시 해봐야겠다. 그런데 아예 접근 방법이 잘 안 보여서 레퍼런스 봐야할지도..ㅎ

public class Solution { 
	public String compressString(String str) {
    // 빈 문자열 거르기
    if(str.length()==0) return str;

    // 3개 이상 문자가 연달아 반복되면, [반복횟수 + 문자] 로 압축. 
    String result = "";

    ArrayList<String> list = new ArrayList<>();
    // 문자가 바뀌는 시점마다 다 쪼개서 리스트에 넣을까..? <www, gg, o, pp, o, pppp> 이런 식으로..

    for(int i=0; i<str.length(); i++){
      for(int j=0; j<str.length(); j++){
        if(str.charAt(i)!=str.charAt(j)){
          list.add(str.substring(str.charAt(i), str.charAt(j)));
          i=j;
          break;
        }
      }
    }

    // 리스트 요소의 길이가 3이상이면 길이 + 문자로 값 치환? 
    for(int i=0; i<list.size(); i++){
      if((list.get(i)).length() >= 3) list.set(i, (list.get(i)).length()+(list.get(i)).charAt(0));
    }

    result = list.toString();
    return result;
	} 
}

0개의 댓글