본문 바로가기

컴퓨터과학(CS)/데이터 베이스

(17)
조인(오라클 기준) 항상 뭔가 레프트 조인과 라이트 조인이 헷갈렸다. 그런데 그냥 간단하게 레프트 조인을 하면 왼쪽 테이블 기준의 컬럼으로 모두 가져오고 그 컬럼 값이 오른쪽 테이블에 없다면 null을 채워주는 형식이다. 확실히 직접 실무에서 사용하면서 하니, 자연스레? 실습이 되는 기분이다. 물론 나보다 더 잘 짜신 분들과 동기들 쿼리를 보면서 읽는 것도 벅차긴 하다 ,,ㅎ
인덱스와 인덱스의 최적화 기법 요즘 sqlp 공부를 하면서 인덱스에 대해 많이 듣고,, 보고있다. 데이터도 내 생각보다 깊게 들어가면 끝이 없는 것 같다.. 그리고 뭔가 처음엔 sql을 공부하는 기분이었지만, 파고 들어갈수록 컴퓨터 구조와 데이터베이스 프로그램의 동작 원리를 배우는 기분이다.
트랜잭션의 특징과 데이터베이스의 종류 serializable 모든것을 순차적으로 수행하기에 같은 행에 접근하는 것이 절대 불가능 repeatable 한 트랜잭션이 수정한 행에 다시 다른 트랜잭션아 수정할 수 없음. 새로운 행을 추가하는 것은 가능 read committed 커밋한 것만 조회가 가능하다. 한 트랜잭션이 수정한 행을 다른 트랜잭션이 수정할 수 있다. read uncommitted 커밋되지 않아도 조회가 가능하다. 따라서 러프하게 전체 수행 수준이나 수를 아는 것에 사용하는게 좋다. 팬텀리드는 같은 쿼리를 사용하여 조회하지만 다른 값이 조회되는 증상이다. 반복 가능하지 않는 조회는 한 트랜잭션 내에서 같은 행에 두번 접근하는데 그 값이 다른 경우 더티리드는 트랜잭션을 커밋치지 않은 행을 읽을 수 있을 때 발생한다. 데이터베이스의 ..
ERD와 정규형(정규화) https://chat.openai.com/share/4919fbd6-fcf8-4e2f-a1e1-8f53b2d78ce2 ChatGPT A conversational AI system that listens, learns, and challenges chat.openai.com 1정규형, 2정규형, 3정규형, 보이스/코드 정규형, 4정규형, 5정규형이 있다. 그 중에서 1~3, 보이스/코드 정규형을 읽어보았다. 개념만 확인하였을 때는 이해가 쉽지 않았다. 물론, 그냥 단순하게 1정규형은 원자성을 지키고,, 이런식으로 암기는 쉬웠지만 그래서 강의나 예제를 통해서 이해해보았다. 실무에서 해당 정규화가 필요한 경우나 반정규화의 필요성을 느끼기 어려웠다. 물론,, 그러한 부분을 다들 고려해서 설계해서 작업을 진행..
관계와 키 https://chat.openai.com/share/d9da103e-ffda-4845-8ae6-7887ad9c444c ChatGPT A conversational AI system that listens, learns, and challenges chat.openai.com n:m 테이블이 중간에 그들을 연결해주는 중간 테이블을 가지고 있다는 것을 알았다. 슈퍼키는 유일성을 만족하고 후보키는 최소성까지 만족한다. 즉 회원의 경우 이메일만으로도 기본키를 구성할 수 있지만 이름과 이메일을 기본키로 한다면 최소성에 만족하지 않는다. 자연스럽게 뽑다가 나오는 것이 자연키 오라클의 시퀀스 같이 값이 변하지 않고 의도적으로 아이디를 부여하는 것이 인조키이다.
필드와 튜플, 릴레이션, 속성, 도메인 https://chat.openai.com/share/10d3654f-fcbb-4217-a109-7f313b8c94a1 정리하면서도 꽤나 헷갈렸다 뭐가 뭘 나타내고 어떤 것이 비슷한 의미이고 같은걸 나타내는지 ,,, 결국 릴레이션은 테이블이며 레코드와 튜플로 구성되고 필드는 속성이고 도메인의 필드가 가지는 값의 집합이다. 또한 blob, enum, set 타입을 알게 되었고 timestamp가 왜 38년까지만 표현되는지에도 관심을 가지게 되었다. enum의 경우 가끔 알고리즘을 풀 때 방향을 보기 좋게하려고 사용했었어서 상대적으로 익숙했다. blob의 경우 요즘은 blob을 사용하기 보다 s3 서비스를 통해 varchar 데이터 타입에 링크만 넘기는 식으로 하는 것이 보통이라고 한다. 또한 유동적인 길이..
DB, DBMS, 엔터티, 릴레이션
이상 현상과 함수 종속 이상 현상: 불필요한 데이터 중복으로 인해 삽입, 삭제, 갱신 시 발생하는 부작용 정규화: 함수 종속을 판단하여 관련있는 속성으로만 구성하여 이상 현상을 제거하고 릴레이션을 분해 이상 현상에는 3가지가 있다. 삽입 이상: 데이터 삽입 시, 불필요한 데이터도 함께 삽입 삭제 이상: 튜플 삭제 시, 필요한 데이터까지 삭제 갱신 이상: 중복된 튜플 중에서 일부만 갱신되어 데이터가 불일치하게 됨 함수 종속: 속성들 간의 관련성 X -> Y X가 Y를 결정한다. Y가 X에 함수적으로 종속되어 있다. X는 결정자이고 Y는 종속자이다. 함수 종속 판단 시 유의 사항 1. 속성의 특성이나 의미를 기반으로 판단해야 함. ( 현재 속성값으로 판단 시 잘못된 판단을 할 수 있음) 2. 기본키나 대체키는 다른 모든 속성들을 ..
관계 데이터 모델링 실습 논리적 모델링은 E-R 다이어그램를 릴레이션 스키마로 변환하고 세부사항을 결정하고 문서화한다. 5가지 규칙 규칙 1: 모든 개체는 릴레이션으로 변환한다. (복합 속성도 다 변환한다.) 규칙 2: 다대다 관계는 릴레이션으로 변환한다. 규칙 3: 일대다 관계는 외래키로 표현한다. 규칙 4: 일대일 관계는 외래키로 표현한다. 규칙 5: 다중값 속성은 릴레이션으로 변환한다. 규칙2 다대다 관계는 관계에 참여하는 개체를 릴레이션으로 변환한 후, 각 기본키를 외래키로 하고 그것들을 포함하여 기본키를 구성할 수 있다. 관계의 속성들도 관계 릴레이션의 속성으로 포함한다. 규칙3 일대다 관계는 1인 개체의 기본키를 n인 개체의 외래키로 한다. 관계의 속성들은 n 측 개체의 릴레이션에 포함시킨다. 약한개체가 참여하면 해당..
관계 데이터 모델링 관계 데이터 모델 개념적 구조를 논리적 구조로 표현 하나의 개체에 대한 데이터를 하나의 릴레이션에 저장 열 = 애트리뷰트(속성), 파일의 필드에 대응 행 = 튜플, 파일의 레코드에 대응 릴레이션 = 2차원 테이블의 구조로 저장, 파일시스템의 파일에 대응 도메인 = 파일이 가질 수 있는 모든 값의 집합 null = 값을 모르거나 존재하지 않을 때 카디널리티 = 튜플의 전체 수 차수 = 속성의 전체 수 릴레이션의 구성 릴레이션 스키마 논리적 구조, 릴레이션 내포, 정적임, 릴레이션 이름과 포함된 속성의 이름으로 정의 릴레이션 인스턴스 릴레이션 외연, 동적임, 릴레이션에 존재하는 튜플의 집합 릴레이션 특성 튜플의 유일성: 하나의 릴레이션에 동일한 튜플 존재 X 튜플의 무순서: 튜플 사이의 순서는 무의미 속성의..