오늘 이후 지각 시간은 6분 후부터
거절 잘 하는 법?
AI 엑스포 개최
특정 정보를 타켓팅하고 검색 함.
엑스포는 무의식적으로 받아드릴 수 있음(뭔가를 얻기보다는 보고 와라. 시야가 넓어질수도 아무 생각도 안들 수 있으나, '계기'를 만들어라! 라는 의미)
용어에 집착하지 마라
1. 키
유일하게 식별할 수 있는 값
특정 테이블에만 영향을 주는 것이 아닌 종속적인 다른 테이블까지 영향을 미침
데이터베이스에 저장된 데이터의 일관성과 정확성을 지키는 것
도메인: 해당 속성에 대한 type과 범위
나이: 나이는 음수가 아닌 양수이어야 됨. 제약 조건: 양수
기본키 제약이라고도 함.
릴레이션은 기본키를 지정하고 그에 따른 무결성 원칙, 즉 기본키는 NULL 값 불가 및 릴레이션에 오직 하나의 값만 존재해야 함
외래키 제약이라고도 함.
릴레이션 간의 참조관계를 선언하는 제약조건임. 릴레이션의 외래키는 부모 릴레이션의 기본키와 도메인이 동일해야 하며, 자식 릴레이션의 값이 변경될 때 부모 릴레이션의 제약을 받는다는 것.
데이터 탐색, 가공 등 내 입맛에 맞는 데이터를 가져와야 함 => 최적화 과정이 어려움
sql 자체를 심플하고 라이트 코드를 짤 수 있음.
삽입
자식 릴레이션: 참조받는 테이블에 외래키 값이 없으면 삽입 금지
그러나 NULL은 가능.
삭제
삭제 => 삽입 명령이 연속해 수행됨.참조 무결성 제약조건의 옵션(부모 릴레이션의 튜플 삭제할 경우)
키와 제약조건을 다룸.
유일하게 식별할 수 있는 값을 가지고 다른 테이블과 관계를 맺는다.
도메인, 객체 ,참조 제약조건 다룸.
대수?
선형대수학..?
사칙연산에 관련된 기호들로 수학적개념을 표현하는것을 '대수'라고 함.
수학적기호로 어떤 데이터를 어떻게 가져올지를 표현함! = 관계대수
원하는 정보를 어떻게 유도하는가에 대한 절차적 언어(연산자와 연산규칙)
의사코드(슈도코드, pseudocode)는 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어이다. 특정 프로그래밍 언어의 문법에 따라 쓰인 것이 아니라, 일반적인 언어로 코드를 흉내 내어 알고리즘을 써놓은 코드를 말한다.
알고리즘 짤 때, 전체 코드를 짜지는 않기에.
논리적인 순서에 따라 코딩.
ex) A={2,4} , B={1,3,5} 일 때
AxB = {(2,1),(2,3),(2,5),(4,1),(4,3),(4,5)}
6개 조합이 나옴!
8bit = 256
아스키 코드 값 7bit = 128개의 정보 표현 가능
원소 개수가 n인 집합 s의 부분집합의 개수는 2^n이므로, 카티전 프로덕트 AxB의 부분집합 개수는 2^|A|x|B|임
🤝 join: 두 개 테이블을 하나로 합치는 것. 이때 공통적인 속성을 바탕으로
관계대수식은 관계를 표현하는 기호 및 연산자로 이뤄진 식.
결과 릴레이션(테이블)을 찾는 절차
셀렉션: 조건에 맞는 튜플을 추출함
프로젝션: 조건에 맞는 속성만을 추출함
합집합: 합집합을 구함(단, 합집합을 하려는 두 집합의 속성이 같아야 함)
차집합: 차집합을 구함(단, 차집합을 하는 순서 중요)
조인: 합집합과 다르게, 해당 릴레이션에 바로 옆에 릴레이션을 붙임.
조건에 맞는 튜플(데이터)을 추출함.
그러나 하나의 릴레이션을 대상으로 하는 단항 연산자임.
복합 조건 가능.
ex) 가격이 8000원 이하이면서 도서번호가 3 이상인 것
연산자 검색 방법) db selection not 기호
합집합하려는 서로 같은 속성 순서와 도메인을 가져야 함.
서울 서점 테이블과 판교 서점 테이블을 합집합하려고한다.
if 서울에 있는 도서 가격과 판교에 있는 도서 가격이 다르다면?
도서번호와 도서가격을 둘 다 fk로 삼아야!
두 릴레이션을 연결시켜 하나로 합칠 때 사용.
앞에서는 두개의 속성이 모두 같아야 함.
관계형데이터베이스를 다루다보니, fk와 pk는 관련성이 있음.
관계대수에서 반영이 됨.
join을 한 테이블은 실존하지 않는 테이블임.
자연조인
조인할 때, 두 테이블에서 중복된 컬럼은 조인을 하지 않음.
외부조인