º 데이터와 정보의 차이점
데이터: 관찰 측정을 통해 수집된 사실 또는 값
정보: 어떤 목적에 의해 데이터를 해석하거나 가공한 형태
(의사결정에 도움을 줌)
º 정보의 특징
정보는 의사결정 과정에 반영되므로,
정확성 및 현재성이 중요
º 정보관리의 중요성
정보를 효율적으로 관리하기 위해서는 정보 시스템이 필요한데,
필요한 데이터를 수집, 저장해 두었다가 필요 시 사용하는 것이
정보 시스템의 주된 목적임
정보 시스템에는
[중앙집중 처리] 와 [분산 처리] 가 있는데,
중앙집중 처리의 단점:
해킹 피해를 입었을 때 데이터가
중앙으로 집중되어 있기 때문에
피해가 심각함.
장점: 데이터가 한 곳에 집중되어 있어
보안 비용이 상대적으로 적게 듦
분산 처리 단점:
데이터의 보안을 위해 많은 비용 사용
분산 처리 장점: 해킹 등 피해를 입었을 때
특정 부분만 손실되어 피해가 적음
º 정보처리 시스템의 유형
º DB의 정의
각각의 문화가 다른 팀들이 모여 하나의 작업물을 완성해야 한다고 해보자, 그런데 각각의 문화와 업무 방식이 달라서 난관을 겪는 다면 해결책이 무엇일까? 바로 모두가 쓸 수 있는 프로세스를 만드는 것이다.
DB도 이와 비슷하다. 중복되는 것을 최소한으로 하여 공용의 데이터를 모아 관리한다. 그러다 보니 일관성이 유지 될 수 있다.
장점: 일관성 유지, 종속성 최소화, 보안, 무결성
중복성 이미지
º DB의 특징
프로그래밍 언어는 외우기가 어려움 EX) 0xFFFFA18FF
그렇지만 여기서 SQL을 사용하게 되면 비교적 쉬움
SELECT NAME
FROM STUDENT ...
º DBMS
DBMS : 사용자가 DB를 사용할 수 있게 만들어진 SW
EX) ORACLE, MY SQL, MS SQL Server, ACCESS, Postgre sql
RDBMS란? : 테이블을 이용한 구조 (릴레이션)
가로: 필드, 속성
세로: 튜플, 레코드 라고 부릅니다.
0~10점의 별점을 줄 수 있다라고 한다면 그 0~10까지의 범위를 도메인 이라고 합니다. 웹상의 도메인과 헷갈리면 안됩니다.
레코드의 총 개수를 기수(Cardinality)라고 하고 필드의 총 개수를 차수(Degree)라고 합니다.
*속성은 null값을 가질 수 있다. (비어 있으면 가능)
기본키는 null값 불가능
표 이미지 www.gub.uy
테이블 -> 가장 기본이 되는 개체 데이터를 입력받을 수 있는 개체 표,릴레이션(엑셀의 셀)
기본 키 각 데이터를 식별할 수 있는 항목
필드 명과 테이블명은 중복할 수 없습니다.
테이블 명 쿼리명 같을 수 없음.
숫자: 양수,음수,0,널
0000-00-0000;0;_
여기서 ;0은 기호도 저장하라는 뜻/ ;_는 -기호도 같이 쓰라는 것이구
0: 숫자 필수 L: 문자 필수 A: 문자 숫자 필수, > 모두 대문자로
º ER모델
DB를 만들기 전에 어떤 정보가 필요하고, 그 정보들 사이의 관계가 어떻게 되는지 한눈에 볼 수 있도록 그림으로 나타낸 것임.
º 키의 분류
이런 테이블이 있다고 가정해보자.
(1) 식별자
식별자는 테이블(데이터 묶음) 안에 있는 각각의 데이터 행(레코드)을 유일하게 구별할 수 있는 속성(컬럼) 또는 속성들의 집합임
쉽게 비유: 학교에서 학생들을 구별할 때 쓰는 학번이나, 주민등록상의 주민등록번호와 같다...
주요 특징:
유일성: 모든 행은 다른 식별자 값을 가져야 함 (예: 학번은 겹치지 않음)
최소성: 꼭 필요한 속성들로만 구성되어야 함
불변성: 한 번 정해지면 값이 바뀌지 않아야 함
존재성 (Not Null): 값이 반드시 존재해야 함
주식별자 (Primary Identifier): 엔터티(테이블)를 대표하고 다른 엔터티와 관계를 맺을 수 있는 가장 중요한 식별자입니다. DB 테이블에서 기본 키(Primary Key) 역할을 수행하는 경우가 많음
(2) Key
정의: 키는 DB 테이블에 저장된 데이터를 효율적으로 찾고(접근), 서로 다른 테이블의 데이터를 연결하는 데 사용되는 속성임
역할: 테이블 내에서 데이터를 유일하게 식별하고, 데이터의 무결성(정확성)을 보장
설명: '이 테이블을 대표하는 단 하나의 열쇠'
비유: 학생증의 학번. 모든 학생을 유일하게 구분하는 가장 중요한 정보입니다.
예시: 위의 테이블에서 학번이 기본키가 됩니다.
네, 데이터베이스 키(Key)들을 더 쉽게 비유로 설명해 드릴게요.
'학생' 이라는 데이터베이스 테이블을 예로 들어볼게요.
비유: 학생증의 학번. 모든 학생을 유일하게 구분하는 가장 중요한 정보입니다.
예시: 위의 테이블에서 학번이 기본키가 됩니다.
특징
식별자의 특징(유일성, 불변성 등)을 모두 가짐
DB 시스템에서 해당 레코드를 가장 빠르게 찾아주는 기준이 됩니다.
주식별자가 물리적 DB에 구현될 때 기본 키가 됩니다.
설명: '기본키가 될 수 있는 자격을 갖춘 모든 열쇠'
비유: 학생을 고유하게 식별할 수 있는 모든 정보(학번, 주민등록번호 등).
예시: 학번, 주민등록번호는 모두 후보키가 될 수 있습니다. (전화번호는 중복될 가능성이 있어 후보키가 되기 어렵습니다.)
설명: '학생을 구분할 수만 있으면 뭐든 다 되는 열쇠'
비유: (학번) 하나만으로도 학생을 구분할 수 있고, (학번, 이름)을 묶어서도 구분할 수 있죠? 이렇게 필요 없는 정보를 더 포함해도 괜찮은 모든 조합입니다.
예시: (학번), (학번, 이름), (주민등록번호, 전화번호) 등. 후보키를 포함하는 더 넓은 개념입니다.
설명: '기본키가 되지 못한 나머지 후보키'
비유: 학번을 기본키로 정했다면, 후보키였던 주민등록번호가 대체키가 됩니다.
설명: '하나의 열쇠로는 부족해서 두 개 이상을 묶어 만든 열쇠'
비유: 수강신청 테이블에서는 '김철수'가 여러 과목을 들을 수 있으므로 이름만으로는 구분할 수 없습니다. 하지만 (이름, 과목코드)를 묶으면 '김철수가 듣는 컴퓨터개론'이라는 하나의 정보를 유일하게 만들 수 있습니다. 이때 (이름, 과목코드)가 복합키가 됩니다.
2-6. 외래 키 (Foreign Key, FK)
역할: 서로 다른 테이블을 연결하여 관계를 맺어줍니다.
비유: 주문서에 적힌 고객ID. 이 ID를 가지고 '고객 테이블'로 찾아가야, 이 주문이 누구의 것인지 확인할 수 있죠.
특징: 반드시 다른 테이블의 기본 키를 참조해야 합니다. (연결 대상이 실제로 존재하는지 확인하는 역할)
ex) 학생테이블 -> 학번(기본키) -> 학과 코드(학과 테이블 참조) -> 이 학생은 어느 학과 학생이다
ex 2) 학생테이블 -> 학생ID(기본키)
기숙사 테이블 -> 호실 번호(기본키) -> 학생 ID(외래키) *이 ID를 갖고 있는 학생 -> 이 기숙사에 거주 중
대출 테이블 -> 대출 테이블(기본키) -> 학생 ID(외래키) *이 학생 ID 갖고 있는 학생 -> 이 책 대출 중이라는 것 의미
º DBMS
(1) MySQL
개발사: MySQL
특징: 오픈소스 데이터베이스, MySQL Workbench 제공
(2) MariaDB
개발사: Montry Program AB
특징: MySQL 기반 개발 -> 높은 호환성 유지
MySQL과 쿼리 명령어 & 운용법 거의 동일
(3) MSSQL
개발사: Microsoft
특징: windows 운영체제에 특화
(4) Oracle
개발사: Oracle
특징: 상업용 데이터베이스로 주로 기업용으로 사용 -> 글로벌 db점유율 1위
관계형DB -> 데이터를 테이블로 관리
DBMS -> 데이터 무결성, 보안 지원
º 무결성 계약조건
비유: '모든 사람에게는 반드시 고유한 주민등록번호가 있어야 하고, 그 번호는 비어 있으면 안 된다'는 규칙과 같습니다.
설명: 테이블의 **기본키(Primary Key)**는 모든 데이터를 유일하게 식별하는 '대표 열쇠'입니다. 이 열쇠는 절대 중복될 수 없고, 비어 있어서도 안 됩니다.
비유: '우리 학교 학생만 도서관에서 책을 빌릴 수 있다'는 규칙과 같습니다.
설명: 테이블 A의 데이터가 테이블 B에 있는 데이터를 참조할 때, A의 데이터는 B에 반드시 존재하는 데이터를 가리켜야 한다는 규칙입니다. 만약 수강신청 테이블에 학번이 1234인 학생의 데이터가 있다면, 학생 테이블에도 반드시 학번 1234인 학생이 있어야 합니다.
비유: '나이 칸에는 숫자만, 성별 칸에는 '남' 또는 '여'만 입력해야 한다'는 규칙과 같습니다.
설명: 각 속성(컬럼)의 값은 데이터 형식, 길이, 허용된 값 등 미리 정해진 규칙을 따라야 한다는 원칙입니다.
예시: 나이 컬럼에 '스무살'이라는 문자열을 입력하거나, 성별 컬럼에 '중성'이라는 값을 넣을 수 없도록 하는 것이 속성 무결성입니다.
º SQL 언어
데이터 정의어 (DDL): 데이터를 생성, 수정할 때 사용. 관리 CREAT(테이블 생성), ALTER(테이블 변경), DROP(테이블 삭제)
데이터 조작어(DML): 저장된 데이터를 실질적으로 처리하는데 사용되는 언어 SELECT(행 검색), UPDATE(행 수정, DELETE(행 삭제) ...
데이터 제의어(DCL): 보안, 회복등을 이유로 사용, 데이터 관리가 목적 GRANT(권한부여), ROLL BACK, REVOKE(권한회수) ...
*보안 정책, 접근 제한 설정
트랜잭션제어(TCL): COMMT(확정), ROLLBACK(취소)
*트랜잭션 경계 설정
º 뷰
진짜 테이블은 실제 데이터(파일)가 저장되는 곳
(예: 직원의 이름, 월급, 주소 등 모든 정보가 들어 있는 창고)
뷰(View)는 데이터를 저장 X 그냥 '진짜 테이블을 볼 수 있는 특별한 창문'이나 '가림막' 같은 것이다...
뷰를 쓰는 이유
(1) 보안
창문으로 '이름'과 '부서'만 보이게 하고, '월급' 같은 민감한 정보는 가려서 안 보이게 할 수 있어요.
(2) 편의
여러 테이블을 합쳐서 복잡하게 봐야 할 때, 그 합치는 방법을 뷰라는 이름으로 저장해 두고 나중에 쉽게 꺼내 볼 수 있어요.
*변경이 불가능하기 때문에 ALTER문 이용 X
삭제 후 재성성해야 함
(3) 정의 방식
CREATE VIEW 뷰이름 AS SELECT
데이터 저장 여부 -> 저장X(가상)
갱신 가능 여부 -> 단순 뷰는 가능, 조인, 그룹 포함 시 -> 제한
(4) LOG
뜻: Rollback (롤백, 되돌리기), ctrl + z
'Un-' (반대) + 'Do' (하다)의 합성어로, "했던 것을 취소하다" 또는 "원래대로 돌리다"라는 의미
뜻: Roll-Forward (앞으로 재생)
REDO (리두): 영어 단어 'Re-' (다시) + 'Do' (하다)의 합성어로, "다시 하다" 또는 "재실행하다"라는 의미임
저장 정보: 데이터가 변경된 후의 상태 값 (After Image)을 기록함
주요 역할:
지속성 보장: 시스템 장애(정전 등)가 발생하여 메모리에 있던 데이터가 사라졌을 때, 이미 COMMIT된 작업의 변경 내용을 REDO 로그를 사용해 데이터베이스에 다시 반영하여 영구히 저장되도록 함
복구: 장애가 발생한 시점까지 DB를 복구하는 핵심 도구임, crtl + y
(5) SQL LOG
5-1. SELECT -> 일반 로그 X -> 로그 없음 타이밍 추론 X
5-2. INSERT -> REDO, UNDO에 기록 -> 삽입시점, 삽입값 추적 가능
5-3. UPDATE -> UNDO, REDO 모두 발생 -> 이전 값 복원 가능
5-4. DELETE -> UNDO 필수 기록 -> 삭제 데이터의 흔적 복원
º 관계형 모델 & ER 모델
(1) 데이터베이스 구축을 위한 모델링
데이터 모델링의 정의: 현실 세계 -> DB로 표현하기 위한 과정
단순화: 누구나 쉽게 구조를 이해할 수 있도록 표현
추상화: 현실의 복잡한 요소 -> 핵심만 남겨 간략히 표현
명확화 -> 모호하지 않게, 해석 시 한 가지 의미로 이해되도록 표현
ㄱ. 요구사항 분석 -> 사용자 요구 건 파악 및 명세서 작성
ㄴ. 개념적 데이터 모델링 -> 개체, 속성 도출 및 ERD 작성 -> 추상하 수준이 가장 높은 업무 모델 중심 모델
ㄷ. 논리적 데이터 모델링 -> 릴레이션 간의 관계 설정 및 식별자 정의 -> 정규화, 신뢰성, 재사용성 확보
ㄹ.물리적 데이터 모델링 -> 논리 모델을 실제 저장 구조에 맞게 변한
ㅁ. 데이터베이스 구현 -> DDL 이용 -> 테이블, 뷰, 인덱스 등 실제 객체 생성
*개념적 모델링(ER 모델) -> 논리적 모델링(릴레이션) -> 물리적 구현(SQL) 순을 데이터 구조를 정의함
이때 논리적 기반이 되는 것 -> 관계형 대수임
1-1. 관계형 대수
관계형 DB에서 데이터를 처리하기 위한 절차적 쿼리 모델 -> 사용자가 데이터를 어떻게 처리할지를 명시하며, 다양한 연산을 통해 새로운 릴레이션을 생성
*SQL보다 먼저 등장함, 질의 최적화, 실행 계획, 내부 연산 최적화에 기반, 하나 이상의 릴레이션 입력받아 새로운 릴레이션을 반환
*합집합, 차집합, 교집합, 곱집합 등이 있다. 자세한 것은 이미지 참조
1-2. ER모델, 관계형 모델, 릴레이션 스키마
ER 모델 -> 개념적 설계, 사용자 요구를 바탕 -> 실세계를 추상적을 모델링 -> 청사진이라 생각하면 편함
관계형 모델 -> 논리적 설계, ER 모델 -> DB 시스템에서 구현 가능한 논리적 구조로 변환
릴레이션 스키마 -> 논리적 설계의 결과 -> 관계형 모델의 규칙에 따라 정의된 테이블의 구체적인 구조 -> 설계도라 생각하면 편함
(2) ER 모델
정의: ER 모델은 데이터베이스를 설계하기 위한 초기 개념적 모델임. 현실 세계의 복잡한 정보를 사람들이 이해하기 쉽게 시각적으로 표현하는 데 중점을 둠
(건물을 짓기 전, 설계자와 의뢰인이 대화하며 그린 스케치주요 요소)
2-1. 설명
개체(Entity): 명사 (예: 학생, 과목)
관계(Relationship): 동사 (예: 학생은 과목을 '수강한다')
속성(Attribute): 개체의 특징 (예: 학생의 이름, 학번)
2-2. ERD
사람, 사물, 관계를 표현하는 직관적인 그림 (ERD)
ERD (Entity-Relationship Diagram)라는 그림을 사용합니다. (직사각형, 마름모, 타원 등을 사용)
특정: DBMS(데이터베이스 관리 시스템)에 종속되지 않고, 사람이 이해하기 쉽습니다.
(3) 관계형 모델
정의: 관계형 모델은 현재 대부분의 데이터베이스(MySQL, Oracle, PostgreSQL 등)에서 실제로 데이터를 저장하고 관리하는 방식에 대한 논리적 모델임. 데이터를 테이블(Table) 형태로 구성
목표:데이터의 실제 저장 및 관리, 논리적 설계
* 스케치를 바탕으로 실제 건물을 짓기 위한 구조화된 설계 방식
3-1. 주요 요소
릴레이션(Relation): 테이블(Table) *데이터를 행과 열로 이루어진 표로 표현
튜플(Tuple): 테이블의 행(Row) 또는 레코드
속성(Attribute): 테이블의 열(Column)
3-2. 표현 방식
수학의 집합론과 논리에 기반하며, 데이터를 다루기 위해 SQL (Structured Query Language)을 사용함
3-3. 특징
키(Key)와 제약조건을 사용하여 데이터의 정확성(무결성)과 테이블 간의 연결을 보장합니다.
가장 간단한 정의: "데이터에 대한 데이터"
비유: 사진의 꼬리표. 사진(데이터) 자체 내용이 아니라, "이 사진은 언제, 누가, 어떤 카메라로 찍었는지"를 알려주는 정보입니다.
가장 간단한 정의: 데이터베이스의 '설명서' 또는 '카탈로그'
비유: DB 테이블의 상세 목차집.
역할: "이 테이블 이름은 뭐고, 여기에 있는 컬럼은 숫자만 들어가는 칸인지, 글자가 들어가는 칸인지" 같은, DB 구조에 대한 메타데이터를 모아서 관리하는 곳입니다.
누가 사용?: 주로 DBMS(데이터베이스 시스템)가 스스로를 관리하는 데 사용합니다.
1-1. 관계형 대수
ㄱ. 합집합: 두 개 이상의 SELECT 문의 결과를 세로로 합침. 중복되는 행은 한 번만 표시 (UNION ALL은 중복 포함).
합집합 이미지
ㄴ. 차집합: 첫 번째 SELECT 문의 결과에서 두 번째 SELECT 문의 결과에 포함되는 행을 제외하고 나머지를 반환함.
차집합 이미지
ㄷ. 교집합: 두 개 이상의 SELECT 문의 결과 중 공통된 행만 반환함.
교집합 이미지
ㄹ. 곱집합: 두 테이블의 모든 행을 각각의 조합으로 연결하여 반환함. 결과 행의 수는 (테이블 A의 행 수) *
(테이블 B의 행 수)가 됨.
곱집합 이미지
º 정규화
데이터베이스를 설계하는 단계에서 사용함.
목적: 데이터의 중복을 제거하고, 데이터가 깨지거나(불일치) 어긋나는 것을 막기(무결성 보장) 위해서임.
간단히 말해, 테이블을 '잘 쪼개서' 깔끔하게 정리하는 작업이라고 보면 ok
수강신청 테이블을 보자.
김철수 학생의 이름과 학과가 두 번이나 저장된 것을 볼 수 있음. 이 중복 때문에 다음과 같은 '이상(Anomaly)' 현상들이 발생함.
문제: 만약 김철수 학생이 '컴공'에서 '기계공학'으로 전과한다면?
-> 김철수 학생이 수강하는 모든 과목의 행을 찾아서 학과 -> '기계공학'으로 교체해야 함. 만약 실수로 하나라도 빠뜨리면(과목은 '컴공'인데 DB 과목은 '기계공'으로 남는다면) -> 데이터 불일치
문제: '박세준'이라는 신입생이 입학했지만, 아직 수강신청을 하나도 안 했다면?
결과: 이 테이블에 '박세준' 학생을 추가할 방법이 없음. 수강과목이나 과목교수 열이 비어있게 되기 때문임. 학생 정보를 넣으려면 불필요하게 가짜 수강 과목을 넣어야 함.
문제: 만약 이영희 학생이 '데이터베이스' 과목을 수강 취소한다면?
결과: 3번째 행 전체가 삭제 -> 이때, '이영희' 학생의 이름과 학과 정보까지 같이 날아감. 단지 수강 취소를 했을 뿐인데, 학생 정보 자체가 사라지는 엉뚱한 문제가 발생함.
위의 문제를 해결하기 위해 -> 테이블 잘게 쪼개는 정규화를 수행
ㄱ.(갱신 이상 해결) 김철수 학생이 전과하면 [학생 테이블]의 100번 학생 학과만 '기계공'으로 단 한 번 바꾸면 됨
ㄴ. (삽입 이상 해결) 신입생 '박세준'은[학생 테이블]에 한 줄 추가하면 그만임. 수강신청은 나중에 해도 ok
ㄷ. (삭제 이상 해결) 이영희 학생이 DB 수강을 취소하면 [수강신청 테이블]의 마지막 줄만 삭제하면 됨 이영희 학생의 정보는 [학생 테이블]에 안전하게 남아있음.
5. 핵심 요약 및 유의사항
언제 쓴다? 데이터베이스 논리적 설계 단계에서 테이블 구조를 잡을 때 사용
왜? 데이터 중복을 제거해서 '이상 현상'을 막고 데이터의 정확성(무결성)을 지키기 위해 씀
주의점 (Trade-off): 정규화를 과도하게 하면 테이블이 너무 잘게 쪼개져서, 나중에 데이터를 조회할 때 JOIN 연산을 너무 많이 해야 할 수 있음 -> 이로 인해 조회 성능이 느려질 수 있음.
결론: 데이터의 정확성과 시스템의 성능 사이에서 적절한 균형점을 찾아 정규화 수준을 결정하는 것이 중요!
정규형의 단계
제1정규형
하나의 데이터 안에서 반복적으로 나오는 항목 -> 배제
정의: 우선 제1정규형으로 DB에 등록할 수 있는 형태로 데이터를 변환해 나가는 것
제2정규형
테이블 중에 값만 알면 특정 행으로 좁혀 들어갈 수 있는 컬럼이 존재함.
하나의 레코드로 줄이는 거임.
EX) 점포명, 상품명, 상품 가격, 재고 등... -> 점포명, 상품명 알면 -> 하나의 레코드로 좁힐 수 있음
제3정규형
부정합을 예방함
종속 관계 제거 -> 동일한 데이터 여러 레코드에 걸쳐 등록되는 것 방지
나중에 정보 편집시 -> 하나의 값을 바꾸면 다른 대응되는 데이터에 모두 반영
BCNF
쉽게 말해, "테이블 내에 숨겨진 종속 관계를 완전히 제거해서, 데이터를 가장 완벽하게 정리한 상태"를 의미함
제1정규형 이미지
위의 표를 보면 홍길동이 두 번 나오는 것을 확인할 수 있음
제1정규형을 통해 1행마다 독립시킨 것을 확인할 수 있음
만들기 -> 테이블 디자인 을 하면 테이블 하나 더 만들 수 있음.
오른쪽 위에 X 누르고 이름 저장하면 됩니다.
기본키라는건 사원번호, 학생 번호, 주민등록번호 같이 다른 사람이랑 겹쳐서는 안되는번호를 의미함. 테이블을 구성하기 위한 최소 필드이고 반드시 있어야 합니다. 기본키는 한 테이블에서 절대 같은 값을 두 개 가질 수 없으며, 엑세스에서는 완전한 중복 데이터 입력이 불가능.
테이블이 점점 쌓여가고 테이블의 관계가 복잡해지면서 필드 이름이 ID로 모두 같으면 관계 파악이 어려워집니다.
기본키는 겹치면 안되지만, 속성(필드) 값은 동일 할 수 있다. ex) 성별
속성(필드)의 순서는 무관하다. (이미 데이터가 있는 상황에서 바꾸면 난잡해진다는 얘기)
삭제시에 튜플(레코드)값은 계속해서 변화한다.
그리고 기본키는 하나의 필드가 아닌 여러개의 필드에서 지정할 수 있습니다.
+ OLE 개체나 첨부 파일 형식의 필드에는 기본 키를 지정할 수 없다.
저거 선택하고 오른쪽 클릭하면 디자인 보기라고 있거든? 그거 클릭하면
이런식으로 뜨게 된다.
노란색으로 표시된 부분 보이지? 저게 등록번호 테이블이 기본키가 되었다는 말임. 만약 등록번호가 C-001이면 다른 사람은 001 쓰면 안된다는 얘기
등록 테이블 더블 클릭하면 이런 식으로 나오게 된다.
이런 식으로 채우고 오른쪽에 X 누르면 됩니다.
##0.#kg 그리고 필드 키그도 실수로 바꿈 저기서 그런 다음에 저장하면 된다.
이런 식으로 되네요 *참고로 짧은 텍스트 -> 텍스트 + 문자 (255자), 긴 텍스트 -> 텍스트 + 문자 (63999자), 숫자는 일반적으로 정수(Long) 형으로 가지고 있는데 4byte임. 날짜와 시간은 100년 ~ 9999년까지 입력 가능함. (8byte), 통화도 8byte라는 사실..일련번호는 학급에서 번호 붙이는 거랑 비슷한데 자동으로 지정이 됩니다. EX)1..2..3..4 참고로 필드 이름이나 데이터를 입력한 후에 일련번호로 바꾸려고 하면 안 바뀝니다.
또 YES/NO TRUE/FALSE, ON/OFF도 선택 가능한데 1BIT라는 점을 명심. OLE 개체는 기본 키 설정 불가능하고, 1GB까지 배정이 된다.
그리고 하이퍼링크라는 것이 있는데 URL 주소나 이메일을 사용할 때 입력하면 링크 형식으로 변환할 수 있는 기능임. 2084자까지 입력 가능.
각각 EXEL, TEXT, PDF 등으로 내보낼 수 있다. 가져오기 -> 원본 변경 X, 연결하기 -> 양쪽에서 데이터 연결(바꿀 수 있음)
*제약조건, 관계, 인덱스는 내보내기 불가능 !
데이터 베이스의 설계
1단계: 개념적 설계 E-R 다이어그램처럼 개념적으로 설계도를 그린다.
2단계: DBMS에 적합한 구조로 설계한다. (조금 더 구체적)
3단계: 물리적 설계 DBMS로 구현 가능한 것을 실제로 만들어보면서 실행한다.
사각형 부분은 테이블입니다. 테이블은 다른 말로 릴레이션 개체라고 합니다.
마름모 부분은 관계에 해당되는 부분입니다.
타원 부분은 필드 즉, 속성에 해당하는 부분입니다.
참고로 밑줄 타원은 기본키에 해당하는 부분입니다.
겹치지만 떨어져 있는 존재: 외래키
데이터베이스 도구 -> 관계 -> 테이블을 드래그해서 끌어오면 만들 수 있습니다.
이 상태에서 만들기를 클릭하면 관계가 생성됩니다. 항상 참조 무결성은 그냥 쉽게 겹치지 않게끔 조치 한다고만 알아두자.
기본키 테이블에 테이블의 외래키 필드 값으로 지정 못함.
이런 식으로 관계를 없앨 거면 선의 가운데를 클릭하고 Delete를 누르면 됩니다.
(등록) 등록번호를 끌어서 (진료) 등록번호에 끌어서 놓으면 다시 안내 창이 뜨게 되는데, 이때 참조 무결성 유지와 관련 필드 모두 업데이트를 선택하면 1대 다 관계가 됩니다. 즉, 한 번 등록한 환자는 진료를 여러 번 받을 수 있다는 뜻입니다.
닫기 -> 예 를 클릭하게 되면 내용이 저장됩니다.
만들기 -> 쿼리 디자인을 누르면 두 개의 테이블을 요약해서 만들어서 가능, 하나의 테이블만 따로 만들기 가
쿼리 디자인 결과. 그리고 색인이라고 검색 속도에 도움 주는 거 있어요 (인덱스) 32개까지 10개 필드 사용 가능함.
왼쪽 테이블에서 등록과 진료를 드래그 해서 끌어오면 됩니다.
등록과 진료에서 더블 클릭을 한다면, 밑에 표처럼 요약해서 볼 수 있습니다. 그런 후에 왼쪽 상단에 실행을 누르면 실행이 됩니다.
선택한 대로 실행이 된 것을 볼 수 있습니다.
홈 -> 보기 -> 디자인 보기를 누르면 다시 쿼리 설정으로 돌아간 것을 볼 수 있습니다.
참고로 쿼리의 조건을 지정하게 되면 필터처럼 원하는 정보만을 골라서 보여줍니다. 대표적으로 내원일자에 between 10-04-02 and 10-04-05 같이 써서 이 기간에 내원한 사람들만 찾을 수 있고 종류에 "강아지" "고양이" 이런 식으로 필터를 걸어서 찾을 수 있다는 뜻이 되겠습니다.
이상 현상
삽입 이상: 불필요한 데이터가 함께 삽입되는 상황
삭제 이상: 필요한 데이터가 함께 삭제되는 상황
갱신 이상: 일부만 수정되는 상황
정규화란? 대체로 더 작은 테이블로 분해하는 과정이다.
종속성을 최소화 하기 위한 과정
외부 스키마: 일반적인 사용자나 응용 프로그래머 관점에서 본 스키마(서브 스키마)
내부 스키마: 설계자의 관점에서 본 스키마(물리 스키마)
개념 스키마: 내 머릿속에 있는 스키마
질의어
질문하면 대답해 준다는 얘기
마지막에 ;붙음
필드가 여러개면 , 로 구분
모든 필드 검색은 *
삭제된 레코드 복구 X
ASC: 오름차순 DESC: 내림차순
ORDER BY: 정렬시 사용
WHERE: 필드에 관한 조건
HAVING: 그룹에 관한 조건
*행 머리글은 여러개 사용, 열 머리글은 하나만 사용
SELECT 이름, 직 FROM 회사
WHERE 부서 = "영업부" ;
-> 회사 테이블에서 부서가 영업부일 때 이름과 직책을 검색하시오
SELECT 부서 FROM 회사 GROUP BY 부서
HAVING SUM([급여]) >= 10000000
-> 회사 테이블에서 부서를 검색하시오.
BY~ 부서별
급여 필드의 합계가 1000만원 이상일
*INSERT INTO 회사(호봉,급여)
VALUES ("1", 10000000)
회사 테이블에 호봉은 1, 급여는 10000000을 넣을 것이오..
*UPDATE 급여 SET 기본급 = 기본급*1.2
-> 급여 테이블을 업데이트 하시오 기본급에 1.2를 곱한 값을 넣으시오
1에다가 0.2%를 더하면 +20%
1에대가 0.2%를 빼면 -20%
폼: 입력, 수정, 삭제를 편리하게 할 수 있는 화면 이것은 엑세스 내부이기 때문에 여기서 조작을 하면 원본이 변경 된다는 것을 알아두자.
보안성이 높다는 것을 알아두자.
바운드 폼: 데이터가 연결되어진 폼
언바운드 폼: 아직 연결되지 않은 폼
단일 폼: 한 개 레코드 연속폼: 여러 줄 레코드
테두리 스타일: 폼의 크기 조정 못하게 하는 것
모달: 예(다른 폼을 선택 못하게 하는 것.)
하위폼 보고서: 폼안에 폼. 러시아 오뚜기 인형처럼 -> 관계가 설정되어 있어야 함, 데이터 종류 같거나 호환되어야 함. 개수 상관 없음.
행 원본 유형에서 할 수 있는 것: 테이블/쿼리, 필드 목록, 값 목록
탭정지: 기본값은 예
조건부 서식: 조건이 만족하지 않으면 해제 된다.
도메인 함수 ("필드명", "테이블명", "조건")
보고서: 입력 수정 삭제 불가 -> 디자인 보기에서는 가능, 레이아웃 보기에서도 보면서 수정 가능
페이지 설정: 용지방향, 용지, 프린터
그룹: 그룹은 머리글, 바닥글에서 반드시 하나 선택해야 함.
그룹 삭제되면 그 안에 있던 컨트롤도 모두 삭제 된다.
전체 &[PAGE]&
컨트롤 원본: 1 , 누적합계 그룹: 그룹
각각의 매크로를 .으로 구분 AUTOEXEC -> 매크로 자동 실행
조회 속성은 데이터 형식을 선택하고 조회를 클릭한 다음에 선택할 수 있는 것을 의미함. 텍스트 상자/ 목록 상자/ 콤보 상자가 존재함.
참고로 짧은 텍스트, 숫자, YES/NO만 설정 가능
*조회 속성을 이용하면 사용자가 직접 값을 입력하는 과정에서 오류를 줄일 수 있다.
*조회 열에서 다른 테이블이나 쿼리에 있는 값을 조회 하도록 설정할 수 있다.
행 원본에 맞춰서 자동으로 설정 X
먼저 텍스트 상자를 선택했을 때 화면입니다.
텍스트 상자 이미지
이번에는 목록 상자 부분입니다. [보기] -> [디자인 보기]
실행 결과로 밑에 화살표가 나타난 것을 볼 수 있습니다. 콤보 상자도 비슷합니다.
목록 상자 이미지
짧은 텍스트, 긴 텍스트 등을 선택한 후에 보기를 누르면 필드 속성을 볼 수 있다. 여기서 여러가지를 수정할 수 있습니다.
(1) 필드 크기는 엑셀의 표시 형식과 같음(G/표준)
캡션은 필드에서 보여지는 제목을 바꿀 수 있습니다.