DB

Growing_HJ·2024년 6월 12일

일기장

목록 보기
25/51

2024.06.12. WED, DataBase.
1. 데이터 베이스 프로젝트
1.1 진행 과정
-> 계획 -> 분석 -> 설계 -> 테스트
1.2 DB 프로젝트 진행 과정

A.개념 데이터 베이스 모델링 (E-R Model)
(Entity(개체) - Relationship (관계) 모델링)

  • entity: 업무 수행을 위해 데이터로 관리되어져야하는 사람, 장소, 사건 등
    관계(Relationship) : 개체간의 관계, 1:1, 1:다, 다:ㅏ
    정규화 : 데이터 중복을 제거, 속성이 본래의 개체에 위치시키도록 함.
    일반적으로 3정규화 까지 진행함.

B. 논리적 데이터베이스 모델링

  • 개념적 구조를 특정 RDBMS (MySQL) 가 처리할 수 있는 스키마를 생성하는 단계.
  • 개체를 대상으로 Table 변환
  • 스키마: 회사의 업무단위 별로 구분된 데이터베이스

C. 물리적 데이터 베이스 모델링

  • 논리적 데이터베이스 모델링 단계에서 얻어진 데이터베이스 스키마를 조금 더
  • 효율적으로 구현하기 위한 작업과 구현하려는 DBMS 의 특성에 맞게 실제 데이터 베이스 내의 개체들을 정의하는 단계
    -> 더 효율적으로 구현한다는 것에 대한 예
    데이터가 많이 적재 => SQL 속도 저하 => 속도 개선 필요
    속도 개선 (검색 효율)을 위해서 index table 에 구축.
  • 코드의 복잡도, 가독성, 유지보수, 접근제어(보안) 관련 개선
    view, trigger, sroced procudure, fuction 등
  • 역정규화 => 시스템의 성능 향상을 위해서 정규화에 위배되도록 하는 행위.
  1. 쿼리문

2.0. 세션 (session) , Transaction (트랜잭션) , Data lock

  • Session
    MySQL 을 사용하기 위해 로그인 한 상태. => 세션이 시작 (Open) 되었다고 함.
    로그인 한 상태에서 로그아웃 한 상태 => 세션이 종료 (Close) 되었다고 함.
    session 과 tcp/ip 관계
  1. MySQL Terminal Client 2개 실행
    • 동일한 유저의 동일한 스키마를 사용하는 session
  2. MySQL Session 2개 , Client 2개 이니까,
    • session A (client A(화면 A)) , session B (client B (화면 B))
  3. session A는 select 실행 완료. / session B는 update 실행 완료.
  4. 위의 두 요청을 MySQL server 에서 받아서, 처리 후, 결과를 각각 요청한 쪽으로 전송.
    여기서, MySQL server 어떻게 구분해 전송하게 될까?
  • TCP/IP (컴퓨터 주소), PORT 정보 (프로세스 구별 정보) 가 필요.
  • Transaction (트랜잭션)

  • 트랜잭션이 끝나는 경우 : rollback, commit, session 종료
    비정상: rollback, commit ,session 종료
    정상: commit

  • lock
    row lock (행단위)
    A : transaction 중
    B : update 중 ( A의 transaction 종료될 때까지 대기)
    DML 성능이 떨어지게 됨.
    발생시점 - 어떤 한 행에 update, delete 가 진행되었고,
    트랜잭션을 완료하지 않은 경우.
    commit or rollback 를 해야 함.
    table lock (테이블 전체)
    발생시점 - 테이블에 한 건 이상의 데이터가 있는 상태.
    모든 행에 update, delete 가 진행되었고,
    트랜잭션을 완료하지 않은 경우.
    commit or rollback 을 해야 함.

    - key
    + 기본키 (Primary key) : 테이블의 각 행에 대한 식별자 역할을 함.
    + 외래키 (Foreign key) : 다른 테이블에서 참조하는 기본키가 칼럼인 경우
    + 복합키 (compound key) : 2개 이상의 칼럼을 결합하여 고유한 값을 가지는 키.
    + 자연키 (natural key) : 개체의 정보 중 고요한 값을 가져서 각 행마다 식별할 수 있는 의미를 가지는 칼럼.
    + 대리키 (Surrogate key) : 일련번호와 같은 가상의 값으로 기본 키의 역할을 하는 칼럼.

2.3. SQL 문장의 종류.

  • DDL (데이터 정의어): 데이터베이스를 정의하는 언어를 말하며 데이터를 생성하거나 수정, 삭제하는 등 데이터의 전체 골격을 결정하는 역할의 언어.
  • create, alter, drop, turncate
  • DML (데이터 조작어) : 정의된 데이터 베이스에 입력된 레코드를 조회하거나 수정하거나 삭제하는 등의 역할의 언어.
  • select, update, delete, insert

    * select 절의 구문 형태
    select : 테이블의 칼럼, select 절
    form : 테이블, view, select 절
    where : 조건
    Group by : 데이터 그룹핑
    having : 그룹핑된 결과에서 추가적으로 조건을 적용
    order by : 정렬.
  • DCL (데이터 제의어) : 데이터베이스에 접근하거나 객체에 권한을 주는 등의 역할을 하는 언어.
  • grant, revoke, commit, rollback

2.4 view
-> 가상의 테이블임.
-> select 문장에 이름을 부여하여, 부여된 이름을 마치 테이블의 이름처럼 사용할 수 있음.

  • 목적 ) select 문장의 재사용.

0개의 댓글