20220323

박찬웅·2022년 3월 23일
0

공부

목록 보기
11/12

오늘 배운것들

Database

데이터베이스의 속성

    1. 동시 공용: 여러 사용자가 서로 다른 목적으로 사용한다.
    1. 지속적인 변화: 삽입, 삭제 등 지속적으로 변화한다.
    1. 실시간 접근성: 언제든지 필요한 시점에 접근할 수 있어야한다
    1. 내용에 의한 참조: 포인터처럼 저장 주소나 위치로 관리하는 것이 아니라, 데이터 내용에 의해서 참조된다. 사용자가 원하는 데이터의 조건을 명시하면, 데이터의 위치가 어디든 접근 가능하다.
    1. DBMS에 의한 관리

💡 데이터베이스에서는 동일 데이터의 중복은 불필요하다는 관점이다. 저장공간의 낭비. 하지만 검색의 효율성을 위해 최소한의 중복을 허용한다.(MinimalRedundancy)

도메인(domain) :한 속성이 취할 수 있는 모든 원자 값의 집합 (데이터 타입, 크기, 형식, 제한 범위, Not Null 여부 등으로 정의한다)
릴레이션 스키마(schema) : 릴레이션을 구성하는 속성들의 집합. 2차원 구조의 행열에서 속성컬럼들의 집합
릴레이션 인스턴스 : 릴레이션을 구성하는 튜플들의 집합. 행들의 집합

관계

관계는 1:1, 1:N, N:M 으로 존재할 수 있다.

JOIN

  • 테이블 조인(INNER) (left, right), (Driving, Driven) 테이블의 교집합을 찾아 부합하는 레코드만 출력
  • 테이블 LEFT JOIN LEFT 테이블은 모두 출력하고, RIGHT 테이블은 조건에 만족하든, 만족 안하든 출력(NULL)
  • RIGHT JOIN
  • SELF JOIN 한 테이블을 Alias를 통해 추상적인 2개를 테이블로 보고 join한 것. 재귀 관계 언제 SELF JOIN을 사용할까? 같은 테이블에서 어떤 속성이 어떤 속성을 참고해야 할 때.
💡 언제 self join을 사용할까?
  1. 위계성 데이터를 다룰 때 ( 기업의 인사정보, 같은 테이블 안에서 매니저와 하부직원 간의 관계를 나타낼 때)
  2. 순차성 데이터를 다룰 때 (행마다 전후 순서가 명시된 컬럼이 있을 때, 셀프 조인을 통해 정렬할 수 있다. previous_id, next_id)
  3. 1개의 테이블 안에 관계성이 명시되어야 할 데이터가 여럿 존재할 때 (1개의 데이터가 출발지이면서 도착지인 상황. 즉 1개의 데이터가 다수의 관계성을 띨 때)

💡 A 테이블의 기본키 a컬럼을 참조하여 B테이블의 외래키를 만들면, A 테이블의 다른 컬럼을 참조할 필요는 없는가?
  • 그렇다. B 테이블에 A 테이블의 c 컬럼이 없다고 하여도 외래키를 참조하여 A 테이블에서 검색하는 구문을 짜면 된다.
💡 기본키가 아닌 컬럼을 참조하여 외래키로 만들 수 있는가?
  • 기본이 아닌 키에 외래 키를 만드려면 고유한 제약 조건이 있는 열이어야 한다.
  • UNIQUE 제약 조건을 적용하면 응용 프로그램에서 거의 영향을 미치지 않으면서 참조 무결성을 제공 할 수 있다.
💡 외래키 Foreign key를 반드시 사용해야 하는가?
profile
기록장

0개의 댓글