1 데이터베이스 (Database, DB)
- 쉽게 말해, 데이터베이스는 데이터 저장소
- 어렵게 말해, 일정한 체계 속에 저장된 데이터 및 데이터간 관계의 집합
- 데이터는 보통 table(표) 단위로 저장됨
- DB는 보통 여러 table을 가지고 있을 수 있음
1.1 데이터베이스의 중요성
- 현대 사회는 거의 모든 전기 기기에 DB가 있기때문에 데이터를 효율적으로 관리하려면 DB 시스템이 필요함
- 하지만, 모든 상황에 DB가 필요한건 아님
- 언제 필요함? 대용량의 데이터를 다룰 때
- 예
- 입금 출금 이체 등 은행 거래 (인터넷 뱅킹 포함) : Data 필요, 대용량 Data, 많은 사용자 (DB 필요)
- 호텔 객실 예약 관리는 기록이 필요함 : Data 필요, 대용량 Data, 많은 사용자 (DB 필요)
- 신호등의 램프 제어: 소규모 Data 필요 (신호의 상태를 기억하고 있어야 다음 신호 상태를 결정할 수 있음, DB 불필요)
- 알고리즘으로 관리할 수 있는 프로그램 회로가 기능 대체 가능. 실질적으론 DB가 필요하지 않음
- 온라인 쇼핑몰에서의 물품 구매: Data 필요, 대용량 Data, 많은 사용자 (DB 필요)
- 전자식 개폐장치의 비밀번호 관리: Data 필요 (한명이 한번에 번호를 눌러 정답과 비교. DB가 필요하지 않음 , DB 불필요)
- 입력받은 번호를 저장해놔야 정답 비밀번호와 비교 가능 하지만 이것 역시 알고리즘 프로그램 회로로 대체 가능
1.2 DB 시스템의 특성
- 데이터베이스 자체도 여러개 만들 수 있음
- 최초 적재 (loading): 서비스를 위한 초기 대량 데이터 적재
- 데이터 축적 (Interaction): 이벤트 발생에 따른 잦은 변경
- 대용량의 데이터를 다룰때만 DB가 필요
- 1) 많은 사용자들이 2)원하는 순간 3)데이터에 접근하거나 4)동시 접근 할때 관리 가능
- 대용량의 데이터가 체계적으로 조직화되어 있어야함
- 원하는 조건에 맞는 데이터에 접근가능
- 데이터베이스 시스템
1.3 테이블 (Table)
table에는 row(행)와 column(열) 이 있다.
row: table에 대한 체계적인 정보가 set로 구성되어 있는 단위, 개체
column: table이 갖고 있는 속성
예: 학생 table
- row: 각 각의 학생 개체 (김철수 개체 , 이영희 개체 등)이 갖고 있는 정보
- 행 (Row): SQL 등에서 실제로 데이터를 다룰 때 자주 사용되는 용어
- 레코드 (Record): 가장 일반적으로 사용되는 용어, 하나의 완전한 데이터 항목을 나타냄
- 튜플 (Tuple): 관계형 데이터베이스 이론에서 주로 사용되는 용어, 수학적인 의미에서 속성들의 순서화된 집합을 나타냄
- 엔티티 (Entity): 주로 데이터 모델링 단계에서 사용되는 용어, 실세계의 개체나 개념을 나타냄.
- 인스턴스 (Instance): 특정 엔티티의 구체적인 예를 나타냄, 객체 지향 개념에서 차용된 용어.
- column: 학생(table)이 갖고 있는 속성
- 열 (Column): SQL 등에서 실제로 데이터를 다룰 때 자주 사용되는 용어, 테이블의 수직적 구성 요소를 지칭
- 필드 (Field): 가장 일반적으로 사용되는 용어, 특정 유형의 데이터를 저장하는 테이블의 한 부분을 나타냄
- 속성 (Attribute): 데이터 모델링과 관계형 데이터베이스 이론에서 주로 사용되는 용어, 엔티티의 특성이나 성질을 나타냄
- 도메인 (Domain): 특정 속성이 가질 수 있는 모든 가능한 값의 집합(or 정의역)을 의미하는데 때로는 열 자체를 지칭하는 데 사용되기도 한다.
- 변수 (Variable): 프로그래밍 관점에서 데이터베이스를 다룰 때 사용되는 용어
학번 이름 전공 성별 20240001 김철수 컴퓨터공학 남 20240002 이영희 경영학 여 20240003 박민준 생물학 남 20240004 정수연 물리학 여 20240005 강지원 심리학 여 - row: 각 각의 학생 개체 (김철수 개체 , 이영희 개체 등)이 갖고 있는 정보
1.4 질의 (Queries)
- DB를 다루는 언어
- 대표적인 예: SQL
- 다른 언어에서 SQL문을 string 의 형태로 DB에 접근할수도 있고 따로 SQL을 써서 접근할 수 있음
- SQL 질의를 입력하면 (=SQL 쿼리을 날리면) 쿼리문이 stored database definition에서 DB구조를 파악한 후 Stored DB에 접근해서 쿼리문에 대응되는 원하는 data를 가지고와서 사용자에게 전달
- DBMS: DB를 다루는 프로그램
- DataBase Management System (DB 관리 시스템)
- 사용자가 DB에 접근할 수 있도록 지원해주는 프로그램의 집합 (모듈의 집합)
- 사용자 ID생성, 권한부여, 보안 관리, 동시성 제어, 사용자의 쿼리문을 처리 등의 모듈의 집합
- Business 요구사항에 맞는 DBMS를 선택해야함
- DBMS종류: 오라클, MS-SQL, MS-Access, SQLite, MySQL, MariaDB, SQL Server, SQLite, PostgreSQL, etc.
- DBMS 종류마다 시스템이 다르긴 하지만 모두 SQL 로 다룰 수 있다.
- SQL은 국제 표준이 존재하기 때문에 국제 표준을 습득하면 모든 DBMS를 어느 정도 사용할 수 있다. (하지만, 각 DBMS마다 고유의 문법이 있어 약간 씩 다름)
1.5 Database Example
- 학적 관리
Course Table
- attribute: course_name, credit_hours, department
course_name credit_hours department Introduction to Computer Science 3 Computer Science Calculus I 4 Mathematics World History 3 History Organic Chemistry 4 Chemistry Student Table
- attribute: name, student_number
name student_number John Smith 20240001 Emma Johnson 20240002 Michael Lee 20240003 Sophia Chen 20240004 Section Table
- attribute: section_ideintifier, course_number, semester, year, instructor
section_identifier course_number semester year instructor CS101-1 CS101 Fall 2023 Dr. Alan Turing MATH201-2 MATH201 Spring 2023 Dr. Katherine Johnson HIST100-3 HIST100 Fall 2023 Prof. Howard Zinn CHEM302-1 CHEM302 Spring 2023 Dr. Marie Curie Grade Report Table
- attribute: student_number, section_identifier, grade
student_number section_identifier grade 20240001 CS101-1 A 20240002 MATH201-2 B+ 20240003 HIST100-3 A- 20240004 CHEM302-1 B