시니어 백엔드 개발자가 알려주는 데이터베이스 개론 & SQL (강의 정리)

minseok·2023년 2월 11일
0

https://www.inflearn.com/course/백엔드-데이터베이스-개론

📕 데이터 베이스 개론









📗 database

database

  • 관련있는(related) 데이터들의 조직화된 집합(organized collection)
  • 중복을 막을 수 있다.
  • 데이터의 불일치를 막을 수 있다.

database management system

  • 사용자에게 DB를 정의하고 만들고 관리하는 기능을 제공하는 SW

meta data

  • data를 설명하기 위한 data
    - 예 : 데이터 유형, 제약 조건, 인덱스, 사용자 그룹




📗 data models

database의 구조를 기술하는데 사용될 수 있는 개념들이 모인 집합

conceptual ( high )

  • 일반 사용자들이 쉽게 이해할 수 있는 개념들도 이루어진 모델
  • entity - relationship model ( ERD )

logical ( representational )

  • 이해하기 어렵지 않으면서도 디테일하게 DB를 구조화 할 수 있는 개념
  • object data model

physical ( low )

  • 데이터가 어떻게 파일 형태로 저장되는지 기술하는 수단 제공
  • data format, data orderings, index




📗 schema & state

schema

data model을 바탕으로 database의 구조를 기술하고 설계때 정의되며 처음
정해진 후에는 자주 바뀌지 않는다.

state

  • 특정 시점에 있는 database의 데이터 ( shapshot이라 함 )
  • database의 실제 데이터





📗 three - schema architecture

user application 으로 부터 물리적인 database 를 분리시키려는 목적
3가지 level이 존재하고 level마다 schema가 정의
초창기에는 external schema, internal schema 2가지만 존재
그러나 오늘날에는 완벽하게 해당 구조를 따르지 않음

  • external schema
    views 라고도 불리고 특정 유저들이 필요로 하는 데이터만 필요

  • conceptual schema
    물리적인 저장구조를 숨기고
    entities, data type, relation ships 같이 users oprations 에 집중

  • internal schema
    실체가 있는 내용





📗 Language

  • DDL : conceptual schema를 정의하기 위해 사용되는 언어
  • VDL : external schema를 정의하기 위해 사용되는 언어
  • DML : 현재는 DML, VDL, DDL 따로 존재하지 않고 통합된 언어(SQL)이 존재

📕 relational data model








📗 수학적인 관점에서의 relation


set
  • 서로 다른 element 를 가지는 collection
  • 2개 set 에 존재하는 element 조합의 경우의 수 ( cartesian product ) = A x B
  • 3개 이상의 set 의 cartesian product = A1 x A2 x ... x An
  • set 의 element 조합들을 tuple 이라고 부른다.
  • 고로 set 의 elements 들의 조합은 subset of cartesian product, set of tuples 이라고 부른다.




📗 relational data model 에서의 ralation


relational data model 에서 set 은 domain을 의미하고 domain 이란 흔히
table 의 colulmn 과 동일하게 생각하면 됩니다.

relation의 특징

  • relation은 중복된 tuple 을 가질 수 없다. ( set of tuples )
  • tuple은 식별하기 위해서 attribute 의 부분 집합을 key 로 사용
  • tuple 의 순서는 중요하지 않다.
  • attribute 의 이름은 중복되면 안된다.
  • attribute 는 atomic ( composite or mutivaluued attribute X )
  • relation schema :: relation의 구조, relation 의 이름, attribute list로 표현
  • degree of a relation :: relation schema 에서 attribute 의 수
  • relation, relation state :: 실제 tuple 집합을 relation 이라고 표현이 가능
  • RDB :: relation( tuples )의 집합으로 구성

📕 ETC






📗 null

데이터가 null 로 표현되면 어떤 의미일까?
만약 '편입하기전의 학교' 를 표현하는 domain이 존재한다면
경우의 수는

  • 편입을 안함, 원래 학생
  • 편입을 하였는데 아직 업데이트 X
  • 이후에 에러로 null 이 들어감

이렇게 중의적인 의미를 가집니다.
null 을 값의 하나로 인정하면 서비스 운영에 있어서 개인적으로 별로라고 생각합니다.






📗 keys

  • super key : 1개의 tuple 을 unique 하게 식별하는 attribute set
  • candidate key : 1개라도 삭제되면 super key 를 만족하지 않는 attribute set
  • primary key : relation 을 unique 하게 식별하기 위해 선택된 candidate key
  • unique key : primary key 가 아닌 candidate key
  • foriegn key : 다른 relation 의 primary key 를 참조하는 attribute set
  • constraints : relation 들이 항상 지켜야 하는 제약 사항
profile
즐겁게 개발하기

0개의 댓글