JANGUN


데이터베이스 설계 및 구현


지음 : 정재화



목차

제1장 데이터베이스 모델링
제2장 데이터베이스 설계와 구현을 위한 도구
제3장 요구사항 분석 및 데이터베이스 설계
제4장 데이터베이스 정의
제5장 데이터 조작 언어
제6장 저장 프로그램
제7장 보안과 사용자 관리
제8장 트랜잭션과 데이터 관리
제9장 웹 애플리케이션에서 DBMS 활용


제1장 데이터베이스 모델링

- 데이터 모델링은 데이터 개체들을 분석하고, 데이터 개체들 사이의 관계를 정의하는 것이다. 데이터 모델링은 데이터의 합리적인 해석을 얻을 수 있는 데이터에 관한 모델화 작업으로서, 데이터 모델은 숲(데이터의 정보 내용)과 나무(데이터의 개개 값)의 대응 관계를 이해하기 쉽게 구성 짓는 추상화 방법이다.
- 데이터베이스 모델링의 단계는 사용자 요구사항 분석, 개념적 DB 모델링, 논리적 DB 모델링, 물리적 DB 모델링의 순으로 진행되며, 끝으로 갈수록 구체화되는 것이 특징이다.
- 개념적 데이터베이스 설계 단계에서는 데이터베이스의 대상이 되는 현실세계의 사물에 대해 논리적으로 체계화하는 설계가 필요하며, 이 설계가 개체 관계 모델을 이용한 설계이다.
- 정규화는 관계형 데이터베이스 모델에서 논리적 데이터베이스 스키마를 효과적으로 설계하는 데 이용되는 기법이다. 정규화 과정에서 설계자의 목표는 정확한 위치에 정확한 데이터를 넣는 것이다. 정규화의 종류에는 제1정규형(1NF), 제2정규형(2NF), 제3정규형(3NF), BC정규형(BCNF), 제4정규형(4NF), 제5정규형(5NF)이 있다.
- 함수적 종속성(function dependency)이란 릴레이션에서 속성 간의 관계를 연관 관계로 표현한 것으로 일종의 제약조건을 의미한다.
- 물리적 데이터베이스 설계 단계는 데이터베이스에 의해 사용되는 특정한 저장공간의 계산 또는 액세스 방법 등에 대한 정의를 표현하는 단계로, 개념적·논리적 설계 단계를 거친 데이터베이스가 저장될 공간에 중점을 둔다. 이 단계는 실제 데이터베이스 관리 시스템에 맞도록 정의된 개체를 구현하는 단계이고, 추상적인 것이 대부분 구현된다.
- 인덱스는 데이터베이스에서 빠른 검색을 위해 사용되며 제약조건을 부여하여 유일성을 갖는 컬럼의 정의로도 사용된다. 그러나 인덱스는 추가 저장공간을 필요로 하며 검색효율은 높아지지만 데이터의 수정이나 삭제에는 시간이 좀 더 많이 걸린다. 또한 잘못 구현된 인덱스는 오히려 검색효율마저 떨어뜨리는 경우가 있다.
- 뷰(view)는 기반 테이블에서 자주 사용되는 정보를 모아 별도의 개체로 정의한 가상의 테이블(virtual table)을 의미한다. 뷰를 물리적 데이터베이스 모델링에서 정의하는 이유는 사용자의 요구가 복잡한 질의를 자주 호출한다면 이를 단순화하여 뷰로 정의하면 데이터베이스의 복잡도를 줄일 수 있기 때문이다.



제2장 데이터베이스 설계와 구현을 위한 도구

- 모델링 자동화 툴이란 수작업으로 ER 다이어그램을 작성하여 모델링하는 것보다 더 직관적이고 편리하게 데이터베이스를 모델링할 수 있도록 도와주는 도구를 말한다.
- 관계는 부모 개체의 기본키가 자식 개체의 기본키로 정의되느냐 일반 속성으로 정의되느냐에 따라 식별관계, 비식별관계로 구분되며, 개체와 개체 사이의 사상(mapping)의 수에 따라 일대일, 일대다, 다대다로 구분된다.
- MySQL 워크벤치에서 두 개체 사이에 다대다 관계를 설정하면 자동적으로 관계 테이블이 생성되고, 이 관계 테이블과 두 개체가 각각 일대다 관계로 교차 정의된다.
- 재귀적 관계(recursive relationship) 또는 순환적 관계란 특정 테이블이 자기 자신과 관계를 맺는 것을 말한다. 특정 테이블에서 기본키로 설정된 필드가 동일한 테이블의 일반 속성으로 전이되기 때문에 재귀적 관계는 비식별관계로 정의해야 한다.
- MySQL 워크벤치에서 물리적 데이터베이스 모델링을 정의하면 개체는 테이블로, 속성은 필드로 바뀐다. 또한 물리적 데이터베이스 모델링에서는 모든 필드의 기본적인 데이터 타입과 함께 표시된다.
- MySQL 워크벤치에서는 Forward Engineer를 이용하여 물리적 스키마 모델링 결과를 실제 스키마로 생성할 수 있다.
- MySQL 워크벤치는 서버 관리와 SQL 에디터가 통합된 클라이언트 툴로 데이터베이스 엔진에 접속해 스키마, 테이블, 뷰 등의 생성 및 관리 등의 작업을 GUI 환경에서 가능하도록 지원한다.
- SQL 에디터는 MySQL의 개체들을 검색하고 관리할 수 있는 도구로 스키마 생성 및 관리, 권한 및 보안 설정, 백업 설정 및 복원 수행 등의 스키마 관리에 필요한 각종 기능을 SQL 문을 사용하지 않고도 가능하도록 지원하고 있다.
- SQL 쿼리 패널은 SQL 문을 입력하여 스키마에 질의하고 그 결과를 확인할 수 있는 도구로, 각종 질의문을 작성하고 실행하는 매우 유용한 도구이다.
- 하나의 MySQL 서버에는 여러 개의 스키마가 존재할 수 있다. 따라서 SQL문을 통해 작업할 스키마를 설정해야 한다. 따라서 모든 SQL문을 작성하고 실행하기에 앞서 반드시 SQL문이 적용될 작업 스키마를 설정해야 한다.



제3장 요구사항 분석 및 데이터베이스 설계

- 데이터베이스를 설계하기 위해서는 사용자의 요구사항을 정확하게 분석 해야 한다. 요구사항 분석은 사용자가 필요로 하는 사항에 대한 정보를 수집하고 그를 분석하여 문서화하는 작업이다.
- 사용자 요구사항 분석은 요구사항 도출, 요구사항 분석, 요구사항 기록의 순서로 진행되며 요구사항 도출 단계에서는 조사 범위를 결정하고 업무관계자 인터뷰를 통해 요구사항을 도출하는 단계이다. 요구사항 분석 단계는 요구사항의 명확성, 완전성을 확인하는 단계이며, 요구사항 기록 단계에서 요구사항 목록을 필요한 형식에 맞춰 문서화하고 관리자의 승인을 받는다.
- 개념적 데이터 모델링이란 현실세계의 업무를 개념적으로 표현하는 작업이다. 개체-관계 모델은 개념적 모델로, 현실의 업무 개체와 개체 간의 관계로 표현하는 데이터 모델이다.
- 개체-관계 모델로의 표현을 도식화한 ER 다이어그램에서는 개체 타입은 사각형으로, 관계 타입은 마름모로 표현한다. 개체를 나타내는 사각형에는 속성을 기술할 수 있다. ER 다이어그램으로 표현되는 데이터베이스의 개념적 모형은 데이터베이스에 존재하는 데이터의 종류나 데이터 간의 관계를 쉽게 파악할 수 있게 해준다.
- 특정 데이터베이스 엔진에서 데이터베이스를 구현하기 위해서는 ER 다이어그램을 테이블 형태로 변환할 필요가 있다. 정해진 규칙대로 개체-관계 형태의 모델을 테이블 형태로 변환되면, 관계형 데이터베이스의 구조로 쉽게 표현할 수 있다.

- MySQL 워크벤치에서는 ER 다이어그램을 그릴 수 있는 툴을 제공하지만, 이는 확장된 ER 다이어그램 (EER-D)로서 사용 시 주의가 필요하다.
- MySQL 워크벤치에서 EER-다이어그램을 완성하는 것은 개념적, 논리적, 물리적 데이터 모델링 작업까지 완료하는 것을 의미한다.
- ER 모델에서 약한 개체, 약한 관계는 MySQL 워크벤치의 EER 다이어그램에서 식별, 비식별 관계로 표현되므로, 개체가 생성되고 관계가 정의되는 상황을 판별하여, 식별관계와 비식별 관계를 적용할 필요가 있다.
- MySQL의 Forward Engineer 기능을 이용하면, EER-다이어그램을 곧바로 그에 상응하는 스키마 형태로 만들어줄 수 있다.



제4장 데이터베이스 정의

- SQL(Structured Query Language)은 관계 데이터베이스에서 실행되는 데이터 언어로, 데이터 정의(DDL), 데이터 조작(DML), 데이터 제어(DCL)의 기능을 제공한다.
- DDL은 데이터베이스 내의 여러 객체, 즉 스키마, 테이블, 인덱스, 뷰 등을 생성하는 작업과 구조를 변경하여 관리하는 기능으로 주로 데이터베이스 관리자가 사용한다.
- DDL은 스키마, 테이블, 인덱스, 뷰, 도메인, 제약조건 등 개체의 생성, 수정, 삭제 등의 관리를 위한 명령어로 CREATE, ALTER, DROP 문 등이 있다.
- CREATE 문은 스키마, 테이블, 인덱스, 뷰 등의 개체를 생성하기 위한 SQL 문이다. ALTER 문은 CREATE 문에 의해 생성된 개체를 수정하는 것으로 항목의 추가나 삭제 등 구조 변경의 경우에 사용되거나, 기존의 개체에 제약조건 추가 및 삭제하기 위해 사용된다. DROP 문은 개체를 제거하는 데에 이용된다.
- 스키마의 생성은 CREATE SCHEMA 문을 이용하며 삭제 작업은 DROP SCHEMA 문으로 할 수 있다. DROP SCHEMA 문은 스키마를 삭제하는 데에 이용된다.

- CREATE 문은 스키마, 테이블, 인덱스, 뷰 등의 개체를 생성하기 위한 SQL문이다. ALTER 문은 CREATE 문에 의해 생성된 개체를 수정하는 것으로 항목의 추가나 삭제 등 구조 변경의 경우에 사용되거나, 기존의 개체에 제약조건 추가 및 삭제하기 위해 사용된다. DROP 문은 개체를 제거하는 데에 이용된다.
- 테이블 생성은 CREATE TABLE 문을 이용하며, 기존 테이블의 구조는 ALTER TABLE 문을 이용하여 언제든지 수정이 가능하다. 또한 테이블은 DROP TABLE 문으로 삭제할 수 있다.
- 테이블 생성 및 수정 시 컬럼에 7 가지의 제약조건을 정의할 수 있다. PRIMARY KEY는 기본키를 정의, NOT NULL은 컬럼값을 의무적으로 입력, UNIQUE는 동일한 컬럼값 존재할 수 없다는 제약, AUTO_INCREMENT는 자동 증가, DEFAULT는 기본값, FOREIGN KEY는 외래키, CHECK는 컬럼값을 한정하는 기능이 있다.
- 인덱스는 DBMS에 의해 데이터 파일 내의 특정 레코드를 빠르게 찾을 수 있도록 하는 것으로 인덱스를 통하여 질의를 수행하면 응답시간이 향상된다.
- MySQL Server에서 지원하는 인덱스는 주로 BTREE 계열의 인덱스이며, 제약조건에 의해 자동적으로 생성하는 방법이 있으며, 사용자에 의해 명시적으로 생성할 수도 있다. 생성된 인덱스는 SHOW INDEX 문을 이용하여 확인할 수 있다.



제5장 데이터 조작 언어

- 데이터 조작 언어(DML: Data Manipulation Language)는 데이터 정의 언어(DDL)에 의해 정의된 데이터베이스 스키마 내의 데이터를 조작하는데 사용된다. 데이터 조작 언어를 사용하여 데이터를 삽입, 수정, 삭제 및 검색할 수 있다.
- INSERT 문은 테이블에 모든 또는 부분적인 컬럼에 대한 새로운 레코드를 삽입할 때 사용된다. 또한 이미 다른 테이블에서 검색할 결과를 새로운 테이블에 삽입할 수 있다. 데이터 삽입 시 DBMS의 제약사항을 반드시 만족시켜야 한다. 특히 NOT NULL, PRIMARY KEY, FOREIGN KEY 등 데이터 무결성을 저해하는 데이터 값이 입력될 때, DBMS는 실행을 거부한다.
- UPDATE 문은 존재하는 레코드에서 조건에 따라 일부 또는 전체 컬럼 값을 변경하는 작업을 수행하며 INSERT 문과 마찬가지로 변경하려는 값이 제약사항을 위배할 경우 실행이 거부된다.
- DELETE 문은 조건을 만족하는 레코드를 삭제할 때 사용하는 명령어이다. FOREIGN KEY 제약사항이 존재하는 경우 참조 무결성 제약조건에 의해 실행이 거부될 수 있다.
- UPDATE/DELETE 문에 WHERE이 없는 경우 테이블에 존재하는 모든 레코드를 수정/삭제한다. 따라서 SAFE UPDATE 모드는 WHERE이 없는 UPDATE/DELETE 명령문의 실행 여부를 결정한다.

- SELECT 문은 관계 대수의 레코드를 선택하는 셀렉션, 특정 컬럼을 추출하는 프로젝션, 조건에 딸 두 릴레이션을 결합시키는 조인, 두 릴레이션의 레코드를 모두 조합하여 결합시키는 카시션 프로덕트 연산의 역할을 수행한다.
- SELECT 문은 비교연산자, 논리연산자, 특수연산자, 산술 연산자 등을 사용한 수식을 사용한 조건을 WHERE절에 기술하여 테이블에 저장된 레코드 중에서 조건을 만족하는 레코드만 검색할 수 있다.
- SELECT 절에서 출력되어야 하는 컬럼명 앞에서 DISTINCT를 기술하면, 출력 결과에서 발생된 모든 중복된 레코드가 제거된다.
- SELECT 문의 ORDER BY 절은 특정 컬럼을 기준으로 컬럼값에 따라 오름차순 또는 내림차순으로 정렬하는 기능을 수행한다.
- LIMIT 키워드는 SELECT 문으로 출력되는 결과물의 레코드의 개수를 제한한다.
- GROUP BY 절은 특정 컬럼을 기준으로 동일한 컬럼값을 갖는 레코드를 그룹으로 묶어 COUNT, MIN, MAX, SUM, AVG 등의 그룹함수를 사용하여 요약된 결과를 검색한다. 또한 HAVING 절은 GROUP BY로 묶인 그룹 내에서 조건을 주어 검색하고자 할 때 사용하는 기능이다.

- 조인은 테이블 간의 관련성(기본키, 외래키 참조관계 등)을 이용하여 한 개 이상의 테이블로부터 레코드를 결합하여 검색하는 질의방법을 말한다.
- 내부조인은 조인 조건을 만족하는 레코드만을 결합하여 검색 결과에 포함시키는 질의를 말한다. 조인 조건에서 동등(=) 연산자를 사용한 내부조인을 동등조인, 비동등(>, <, ≥, ≤ 등)의 연산자를 사용한 비동등조인으로 구분된다.
- 외부조인이란 조인 조건을 만족하는 레코드만을 결합하여 검색 결과에 포함시키는 내부조인과는 달리 조인 조건을 만족하지 않는 레코드도 검색 결과에 포함시키고 결합되지 않는 레코드의 일부분을 NULL로 대체하여 출력하는 조인을 말한다.
- 외부조인을 사용하는 SQL의 FROM 절에서 조인 조건에 일치하지 않더라도 왼쪽에 위치한 테이블의 레코드를 모두 출력하는 외부조인을 왼쪽 외부조인, 오른쪽에 위치한 테이블의 레코드를 모두 출력하는 오른쪽 외부조인, 그리고 양쪽 테이블의 레코드를 모두 출력하는 완전 외부조인으로 구분된다.
- 한 개의 테이블 만을 사용하여 자신 자신과 조인하는 형태의 조인을 셀프조인 또는 자기조인이라고 한다. 셀프조인을 사용하는 SQL은 테이블 명의 혼란을 피하기 위해 반드시 별칭을 사용하여야만 한다.
- 한 개의 완벽한 검색문 내에 또 다른 검색문이 내포되어 있는 질의문을 부속질의라고 한다. 1차적으로 내포되어 있는 부속질의가 처리된 결과를 주질의가 재사용하 여 추가적인 조건을 적용하는 질의어 방식을 말한다.
- 뷰란 실제 데이터를 가지고 있는 데이터베이스에서 하나 이상의 테이블을 근거로 만들어지는 가상의 테이블을 말한다. 뷰는 내부적으로 SELECT 문으로 정의된다. 그러나 뷰는 단순히 검색을 위해 사용할 뿐만 아니라 INSERT, UPDATE 기능으로도 활용될 수 있다.



제6장 저장 프로그램

- 저장 프로그램은 저장 루틴(stored routine)으로 불리는 저장 프로시저(stored procedure)와 함수(function), 트리거(trigger) 등을 모두 포함하는 명칭이다. 저장 프로그램은 고급 프로그래밍 언어에서 지원하는 작업의 흐름을 제어할 수 있는 제어 명령과 변수사용도 지원한다.
- MySQL에서는 저장 프로그램 뿐만 아니라, SQL 문에서도 사용할 수 있는 사용자 정의변수(세션변수)와 저장 프로그램 내에서만 사용할 수 있는 로컬 변수가 있다. MySQL의 사용자 정의변수 이름은 ‘@’으로 시작한다. 로컬변수는 저장 프로시저 내에서 선언되며 반드시 DECLARE 명령으로 선언되어야 하며, 데이터 타입도 함께 명시되어야 한다.
- 여러 가지 응용작업 중 자주 사용되거나 복잡한 과정을 거치는 SQL 문을 저장하여 하나의 개체로 관리하는 것이 저장 프로시저이다.
- 저장 프로시저는 실행속도의 효율성, 모듈화 기능, 네트워크 전송효율 그리고 보안설정 면에서 효율적이다.
- MySQL에서는 IN, OUT, INOUT 세 타입의 매개변수를 제공한다. 저장 프로지서를 생성할 때 매개변수는 기본적으로 IN 타입으로 설정되며, 다른 타입으로 지정하고 싶을 경우 매개변수명 앞에 OUT이나 INOUT을 사용한다.
- 저장 프로그램에서는 IF 문을 통해 주어진 조건이나 식의 값에 따라 실행되는 SQL 문을 제어할 수 있다. CASE 문은 다중 IF ELSE 문을 간편하게 사용하기 위한 명령어로 조건식이 여러 개일 때 유용하게 사용된다.
- MySQL은 특정 SQL 문을 주어진 조건이 만족하는 동안 반복하기 위해 WHILE, REPEAT, LOOP 문을 제공한다. WHILE 문은 조건식일 참일 동안 DO와 END WHILE 사이의 SQL 문을 반복한다. REPEAT 문은 UNTIL 조건식이 거짓인 동안 REPEAT와 UNTIL 사이에 있는 SQL 문을 반복하며, LOOP 문은 레이블을 이용한 반복할 블록을 생성 후, LEAVE 문을 통해 LOOP 문이 종료될 때까지 반복한다.

- 함수는 저장 프로시저와 유사하게 일반적인 프로그래밍 언어에서 사용하는 함수처럼 복잡한 프로그램이 가능하다. 또한 함수는 RETURN 문에 의해서 특정 값을 돌려주는 기능을 한다.
- 저장 프로시저는 ‘CALL’ 명령어를 사용하여 호출되지만, 함수는 자체적으로 수행이 불가능하고 ‘SELECT’ 문에 포함되어서 실행된다는 점에서 차이가 있다.
- 커서는 테이블에서 여러 개의 레코드를 질의한 후에 질의의 결과인 레코드 집합을 하나의 레코드씩 처리하기 위한 방식이다.
- 트리거는 어떤 테이블의 데이터가 변경될 때 자동으로 지정된 애플리케이션이 동작한다든지 다른 테이블의 데이터를 변경하도록 설계된 저장 프로시저의 특별한 형태이다.
- MySQL은 BEFORE INSERT, AFTER INSERT, BEFORE UPDATE, AFTER UPDATE, BEFORE DELETE, AFTER DELETE의 여섯 가지 트리거를 제공한다.



제7장 보안과 사용자 관리

- MySQL의 권한 시스템의 주요 기능은 MySQL 서버로의 접속권한 관리와 데이터베이스에서의 SQL 및 각종 명령의 실행권한을 관리하는 것으로 서버를 안정적으로 설정하여 다른 사람의 공격과 잘못된 사용을 막는다.
- MySQL 권한 시스템에서는 특정 사용자가 MySQL에 접속을 시도하면 우선 해당 사용자가 접근 가능한 사용자인지 알아보기 위해 사용자명, 비밀번호, 접속한 컴퓨터의 호스트명을 확인하고, 서버에 저장된 사용자명과 호스트명이 확인되면 해당 사용자의 비밀번호를 확인하여 접속을 허락한다.
- MySQL 서버는 SQL 문이나 기타 요청을 받으면, 요청한 사용자의 권한을 검사하여 실행해도 되는지 판단하고, 권한에 맞는 요청을 했다면 요청에 해당하는 작업을 실행한다.
- user 테이블은 MySQL 서버에 접속하기 위한 사용자명과 비밀번호 및 호스트명을 관리한다. 서버에 접속요청이 들어오면 MySQL은 user 테이블을 확인하여 사용자의 접속을 인증한다. 또한 user 테이블에는 다양한 컬럼들이 존재하는데, 서버 내의 전체 데이터베이스들에 대한 권한을 관리하고 있다.
- db 테이블은 사용자명을 검사하여 사용자가 어느 데이터베이스에 대하여 어떤 권한을 가지고 있는지를 정하는 데 사용된다. 사용자가 어떠한 작업을 요청하면 MySQL 서버는 먼저 user 테이블을 확인하여 사용자가 전체 데이터베이스에 대하여 요청에 대한 권한을 가지고 있는지 확인하고, 만약 권한이 없다면 db 테이블을 통하여 데이터베이스에 대하여 권한이 있는지 확인한다.
- MySQL 서버에서는 GRANT 문을 사용하여 사용자를 추가하고, 권한을 부여할 수 있으며, 특정 데이터베이스의 테이블의 컬럼에 대한 권한까지 상세히 설정할 수 있다. REVOKE 문은 사용자의 권한을 제거할 때 사용되며, 사용자를 완전히 삭제하고자 할 때는 MySQL의 user 테이블에서 DELETE 문을 사용하여 해당 사용자를 삭제해야 한다.



제8장 트랜잭션과 데이터 관리

- 트랜잭션은 하나 이상의 작업이 모여 이루어진 하나의 논리적인 작업단위로 한 번에 수행되는 작업이다. 트랜잭션이 만족시켜야 할 조건으로는 원자성(atomicity), 일관성(consistency), 고립성(isolation), 지속성(durability) 등이 있다.
- MySQL에서 트랜잭션 처리가 지원되는 엔진은 InnoDB이다. InnoDB에서는 고립성 수준에 따라 자동으로 행 단위의 잠금을 건다. 트랜잭션은 autocommit 모드에 의해 각 SQL 문이 자동 COMMIT될 수 있는데, 이는 autocommit 모드해제 명령을 통해 해제하거나 START TRANSACTION 문을 사용하여 일시적 해제가 가능하다.
- 잠금을 이용하여 동시에 특정 자원에 접근하여 수행되는 변경작업에 논리적인 모순이 발생하지 않도록 하여 예상치 못한 결과가 데이터베이스에 발생하지 않도록 한다. 잠금이 수행되는 동안 다른 트랜잭션은 기다리게 되므로 서로 충돌하지 않고 필요한 데이터에 접근할 수 있다. 동시에 여러 명의 사용자가 동일한 데이터에 접근하려고 할 때 데이터베이스는 동시성 제어를 하게 된다.
- MySQL에서의 명시적 잠금 작업의 단위는 테이블이다.
- 트랜잭션의 고립성 수준은 READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE가 있다.
- 데이터베이스에 문제가 발생하면 관리자는 신속하게 복원해야 하고, 이 경우 데이터의 원본이 있다면 크게 문제가 되지 않는다. 그러므로 주기적으로 데이터와 트랜잭션에 수행되는 변경작업에 대한 기록인 로그들을 저장해 두어 손쉽게 데이터베이스를 복원해야 한다. 이러한 작업을 백업이라고 한다.
- MySQL의 mysqldump 프로그램을 이용하면 간단한 논리적 백업이 가능하다. mysqldump는 워크벤치의 DATA Export에서 활용할 수 있다.



제9장 웹 애플리케이션에서 DBMS 활용

- 웹 애플리케이션이란 웹 서버상에서 실행되어 그 결과를 클라이언트에게 전달하는 프로그램을 말하며, 이들 웹 애플리케이션은 클라이언트로부터 HTML 문서형태로 입력되는 데이터를 입력받아 애플리케이션 프로그램 내에 정의된 삽입 질의어를 수행함으로써 서버상에 존재하는 데이터베이스 내의 테이블에 새로운 데이터를 저장한다.
- PHP 프로그램의 소스코드는 HTML 태그와 스크립트(Javascript, VBScript) 명령문 그리고 PHP 명령문으로 구성된다. 모든 PHP 명령문은 HTML 태그와 구별하기 위해 ‘<?php’와 ‘?>’ 사이에 기술해야 한다.
- PHP 언어의 변수이름은 ‘$’으로 시작해야 하며, C언어와 다르게 변수의 데이터 타입을 명시하지 않아도 된다.
- PHP 프로그램에서 제공하는 연산자의 종류에는 할당연산자, 산술연산자, 비교연산자, 논리연산자, 연결연산자 등이 있다.
- PHP의 값을 HTML로 출력하기 위한 방법으로 echo 명령문을 사용하는 방법과 print_r 명령문을 사용하는 방법이 있다.
- PHP에서 제공하는 제어문에는 IF 문, IF.ELSE 문 등이 있으며, 반복문으로는 WHILE 문, FOR 문, FOREACH 문 등이 있다.
- PHP에서 제공하는 대표적인 MySQL 연동함수로 연결을 수립하기 위한 mysqli_connect, 질의를 요청하기 위한 mysqli_query, 질의결과를 배열로 받기 위한 mysqli_fetch_assoc, 질의수행 시 발생한 에러값을 확인하는 mysqli_error 등이 있다.