2018년 4월 6일 금요일

패스트 캠퍼스 JAVA 웹 프로그래밍 마스터 12일차(실습, DB)

프로젝트를 위해 준비해야할 사항

  1. UI(기획)
  2. 네비게이션 SPRING MVC
    컨트롤러 메소드
    기능 서술(빠짐없이 한글로)
  3. table구조 : 디비모델링
  4. 샘플데이터를 Import (파일명.sql을 만든다.)
  5. 조회하는 sql을 작성한다.(실행계획, sql튜닝)

DB

  • DB와 DBMS 차이는?
  • DBMS(엄마) : 종류(mysql)
  • DB(책) : Mysql(관리를 위한 DB)
    1. DB생성
    2. DB사용자 생성
    3. 사용자 권한 부여
    4. DB접속
    5. Table 생성 : DB모델링을 통해 정규화(중복 제거)
    6. Table CRUD
  • DB모델링(정규화) -> 중복제거
  • 데이터 모델링
    • 논리적 데이터 모델링 : 실제 Table작업
    • 모델링 : 다양한 관점(view)으로 설명하는것
    • 보통 사용하는 DB는 RDB 형식이다.
    • 모델링
      • 프로세스 모델링 : data의 흐름을 고민
      • 논리적 데이터 모델링 : 특정업무에 대한 내용을 알고 흐름을 고민(금융업무등)
        • 3대요소 : 엔티티/ 관계 / 속성 (/ 식별자)
        • 동사를 보고 관계 여부를 파악한다.
        • 업무에 필요한 명사를 추출
    • 엔티티
      • 엔티티는 N : M 관계는 없다. 
      • 1: ? 관계만 존재한다.
      • N : M 관계일때는 중간에 1 : N , N : 1 관계로 정리해야한다.
  • 식별자
    • 주식별자는 업무와 관련이 있어야 한다.(속성이 1개 or N개)
    • 대리식별자는 임의의 기준으로 만들어서 사용하는 것
  • 무결성
    • 정확성과 일관성을 유지하는 것.
  • 정규화
    • 1차 정규화 : 반복적인 속성이나 그룹 속성을 제거한다.
    • 2차 정규화 : 주식별자에 완전 기능 종속(Non Fully Dependency)되지 않는 속성을 제거한다.(다른 테이블로 구성해도 괜찮은 속성들) -> 속성이 주식별자에 종속적인것들 제거
    • 3차 정규화 : 주식별자에 이행종속(Transitive Depency)되지 않는 속성을 제거한다. -> 속성이 속성에 종속적인것들을 제거
  • ERD표기법
    • 식별/비식별 관계
      • 식별관계(실선) - 부모테이블의 PK가 자식테이블의 PK/FK인 경우
      • 비식별관계(점선) - 부모테이블의 PK가 자식테이블의 일반속성이 되는 경우
  • 도메인
    • 물리적인 데이터베이스에 어떤 형태와 길이로 저장될것인지 지정 하는것
    • 사전에 정의된 용어 사전을 활용하는 것이 바람직하다.
  • 통합
    • 정규화한 모델링을 다시 통합 할 수도 있다.

SQL

  • DML(Data Manipulation Language) : 데이터를 조작하기 위해 사용한다. INSERT, UPDATE, DELETE, SELECT 등이 여기에 해당한다.
  • DDL(Data Definition Language) : 데이터베이스의 스키마를 정의 하거나 조작하기 위해 사용한다. CREATE, DROP, ALTER 등이 여기에 해당한다.
  • DCL(Data Control Language)
    • ㅁㄴㅇㅁ
  • mac에서 mysql root 접속
  • cd /usr/local/mysql/bin
    ./mysql -uroot -p비밀번호
    
  • DATABASE 생성 및 권한 부여하고 접속하기(비밀번호를 바로입력하지말자:보안)
  • # Database 생성
    CREATE DATABASE helloboard;
    # 원격으로도 접속가능
    GRANT ALL PRIVILEGES ON helloboard.* TO fastcamp@'%' IDENTIFIED BY 'fastcamp';
    # 로컬로만 접속가능
    GRANT ALL PRIVILEGES ON helloboard.* TO fastcamp@'localhost' IDENTIFIED BY 'fastcamp';
    # DB에 여태까지 실행한 명령어 적용
    FLUSH PRIVILEGES ;
    #helloboard 데이터베이스에 접속하기 -> 비번입력
    ./mysql -ufastcamp -p helloboard
    
  • ADD CONSTRAINT 제약조건명
  • SELECT 문에 * 는 절대 쓰지말자 : 컬럼명을 꼭 적자
    • 직관성이 떨어진다.
    • 특정위치의 값을 화면에 보여주고 있을때 테이블의 중간에 컬럼을 삭제 했을때 이상한 데이터및 오류가 발생할 가능성이 있다.(제거되는 컬럼에 관한것을 소스에서 제거 후 배포 후 테이블에서 컬럼제거 해야한다.)
  • 그룹함수
    • 그룹함수와 컬럼이 같이 나오면 group by키워드와 함께 사용되어야 한다.
    • 그룹핑 이후의 조건은 having 절에서 구한다.
  • 조인(JOIN)을 할 때는 최소한 테이블 수 -1 만큼의 조인조건이 필요하다.
Share:

0 개의 댓글:

댓글 쓰기