데이터베이스, 관계형 데이터베이스
데이터베이스
○설명
- 조작가능한 데이터, 저장된 데이터의 모임
- 디스크에 저장됨
○데이터베이스 관리 시스템
- DBMS: 데이터베이스를 관리해주는 소프트웨어 시트템, 비쌈 ->필요한이유: 창고를 예시로 두면 잘 정리가 되어야 중간 관리인이 필요한 물건을 빨리 찾아준다 창고중간 관리인 = DBMS!
- DBMS가 제공하는 기능
- 정보를 표현 할 수 있는 틀
- 데이터의 공유기능: 공유함으로써 데이터 중복을 제거한다 ->데이터의 브릿지 해결(깃허브 그 데이터 충돌 해결하는거 생각하면 될듯) ex. int형 char형 충돌, 리시트 안에 항목다른거 충돌
- 동시성 문제 ->하나의 트랜잭션 이 동시에 실행될때 DBMS가 하나를 홀딩해서 문제없게 해줌 요약: 하이패스에 동시에 두대의 차가 들어오면 차 한대를 잠깐 멈춰둠
- 데이터 무결성 유지 가능
- 데이터 독립
- 효율적인 자원관리 기능
- 데이터 보안성과 안전성 유지 가능 -> 보안성: 사람으로부터 데이터 보호, 안전성: 컴퓨터 장애, 고장으로부터 보호
○파일과 데이터베이스
- 파일 시스템의 데이터 관리 기능 -> 프로그램 이외의 방법으로도 데이터 조작 가능 -> 프로그램과 데이터 형식이 타이트하게 묶여있음(파일이 변하면 데이터도 변한다) -> 동시 접근의 문제 -> 보안 문제 -> 장애 복구 문제
○데이터베이스 시스템과 사용자
- 최종사용자가 DBMS를 sql을 사용하여 데이터 이용
- DBA: 데이터베이스 관리자: 담당 DBMS의 권한을 사용자한테 부여 또는 테이블에 index주는게 가능함
관계형 데이터 베이스
○관계형 데이터베이스
- 테이블로 실세계를 표현한 데이터베이스
- 데이터베이스 스키마: 테이블 스키마의 집합(위에 노란부분이 스키마)
- 데이터베이스 인스턴스: 테이블 스키마들에 대한 테이블 인스턴스의 집합(표안에 있는 흰색, 한마디로 각 레코드들 = 데이터들이 다 인스턴스)
- 지금 DBMS는 전부다 관계형임
○데이터 모델: 현실세계 에 있는것을 단순화, 추상화, 수치화
- 릴레이션(relation): 테이블, 표 -> 수학적으로 굉장히 탄탄해서 계속해서 관계형 데이터 베이스가 사용되고 있다 (이러한 이유로 c언어->c++->java 처럼 새로운게 나오지가않음) -> 테이블 인스턴스와 레코드 구분 테이블 인스턴스: 모든 필드 속성 생각하면 됨 레코드: 인스턴스 속성에 들어가는 자료들 △레코드 순서는 문제가 없다 + 속성의 순서도 상관이없음
- 같은 용어
- 릴레이션 = 테이블
- 속성 = 필드
- 튜플 = 레코드
- 사용 목적, 어떤 요소로 쓰는지에 따라 릴레이션의 필요 여부가 달라짐 ->주소를 예시로들면 필요 경우: 시 구 동 번지를 나눠 특정 구에 몇명 사는지 구할때 필요없는 경우: 학생들의 주소 정보를 수집할때 굳이 데이터를 쪼갤 필요가 없음
○키(key) ->레코드 간의 순서가 의미없 으므로 레코드를 구분하기 위한 식별자 ->키 종류
- 수퍼키
- 레코드들을 식별할 수 있는 필드의 집합(ex. (주소), (학번, 주소) 등등)
- 후보키
- 학번 주번 이름 주소의 필드가 있다면 겹치지않는 학번 주번이 후보키가 됨(ex. (학번), (학번, 주번)
- 기본키
- 기본키예시: 학번, 외래키: 학과번호 등
- 외래키는 null이 가능함
- 외래 키
- 후보키 중에서 식별자로 정의한 하나의 키(ex. 학번) 결론: 수퍼키는 레코드 다됨 -> 후보키는 독립적인것만 가능(동명이인, 같은 학과등은 안됨) -> 기본키는 후보키중 하나만 등록
- 외래키는 null이 안됨
'데이터베이스 > SQL' 카테고리의 다른 글
[SQL] SQL 활용(2) (0) | 2023.08.14 |
---|---|
[SQL] SQL 활용(1) (0) | 2023.08.08 |
[SQL] 기본 정리 (0) | 2023.07.31 |
[SQL]데이터 모델과 성능 (0) | 2023.07.24 |
[SQL] 데이터 모델링의 이해 (0) | 2023.07.17 |