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 들이 항상 지켜야 하는 제약 사항