데이터베이스 설계

데이터베이스 설계는 사용자 요구를 토대로 현실 세계의 대상을 구현가능한 컴퓨터 데이터베이스의 구조로 개발하는 작업입니다. 데이터베에스 설계는 스키마를 정의하고 이를 구현하기 위한 전반적인 과정을 거칩니다.

이 과정들을 세분화하면, 요구조건 분석설계(개념적 설계→논리적 설계→물리적 설계) → 구현운영 및 유지보수 입니다.


1) 요구조건 분석: 업무 프로세스 및 사용자가 필요한 정보가 무엇인지, 해결해야할 문제가 무엇인지를 분석하는 과정입니다. 이렇게 분석된 자료를 토대로 요구조건 명세서를 작성합니다.

  [예시]: ㅁㅁ대학교의 학생들을 데이터베이스로 구현한다. 학생에게는 고유의 학번이 부여되며, 그 외에 이름, 나이, 학년, 전공이란 속성을 가진다.


 

2) 개념적 설계: 요구조건을 분석한 결과를 기반으로, 데이터베이스에 저장해둘 데이터 요소(개체 및 속성)가 무엇인지 정하고 그 요소들 간의 관계를 파악하여 개념적으로 표현합니다.  개체-관계 모델(Entity-Relation Model, E-R모델, ERM)을 통하여 개체 타입과 이들간의 관계타입을 이용하여 현실 세계를 개념적으로 표현할 수 있습니다. 이렇게 E-R모델을 이용해 표현한 산출물을 개체-관계 다이어그램(Entity-Relationship Diagram, E-R다이어그램, ERD)이라고 합니다.

E-R모델(Entity-Relation Model): 데이터베에스에 사용되는 개체, 속성, 관계를 약속된 기호로 표현하여 데이터베이스의 전반적인 구조를 이해하기 쉽도록 표현한 모델.


3) 논리적 설계: 개념적 설계에서 만들어진 구조를 기반으로 DBMS가 처리할 수 있는 데이터베이스의 논리적 구조를 설계하는 단계입니다. 여기서 스키마를 정의하게 됩니다. 목표 DBMS에 따라 관계형, 계층형, 망형 모델로 설계될 수 있습니다. 이 단계에서 정규화 또한 진행됩니다.

 

※스키마(Schema): 데이터베이스의 전체적인 구조와 제약조건에 대한 명세를 기술·정의한 것입니다. 스키마의 계층으로는 개념 스키마, 외부 스키마, 내부 스키마가 있습니다.

 

(스키마의 3계층 사진. 출처: https://en.wikipedia.org/wiki/Three-schema_approach )

 

  * 외부 스키마(External Schema):  전체 데이터 중에서 사용자가 바라보는 일부분에서의 논리적 구조를 말합니다. 이는 사용자에 따라 다르며, 여러개가 존재합니다. 서브 스키마라고도 합니다.

  * 개념 스키마(Conceptual Schema): 논리적 관점(사용자 관점)에서 본 전체적인 데이터의 논리적 구조입니다. 개념 스키마를 줄여서 그냥 스키마라 부르기도 하며, 전체적인 뷰라고도 부릅니다. 데이터베이스 전체를 기술한 것이기에, 한 데이터베이스 시스템에선 유일합니다.

  * 내부 스키마(Internal Schema): 물리적인 저장장치 관점에서 본 데이터베이스의 구조입니다.


4) 물리적 설계: 논리적으로 설계된 데이터베이스 구조를 토대로 하드웨어나 운영체제의 특성을 고려하여 그에 알맞은 인덱스의 구조와 내부 저장 구조 및 접근 경로를 설계하는 단계입니다. 그 외에 저장레코드의 양식을 설계하고, 물리적인 데이터의 타입이나 사이즈 등을 정의합니다. 여기서 성능을 향상시키기 위한 역정규화 작업도 실시합니다.


5) 구현: 설계 과정에서 얻어진 것을 토대로 실제 데이터베이스를 만드는 과정입니다. 


6) 운영 및 유지보수: 구현된 데이터베이스를 실제로 운영해보면서 문제점과 개선점을 파악합니다. 그렇게 파악된 문제점을 토대로 데이터베이스의 튜닝유지보수를 합니다.

 * 데이터베이스 튜닝(Database Tuning):  데이터베이스가 일정한 성능을 유지할 수 있도록 데이터베이스의 여러 요소들을 조율하여 비효율적인 요소를 제거하고 성능을 개선하는 작업입니다.

데이터베이스 유지보수:  데이터베이스를 운영하면서 사용자 및 비지니스 환경 변화, 업무 절차 변화가 일어날 수 있습니다. 이런 환경의 변화에 따라 데이터베이스를 지속적으로 변경하는데, 이런 일련의 작업을 유지보수라고 합니다.

1. 데이터베이스 관리 시스템(DBMS, DataBase Management System)

1) DBMS의 정의

데이터베이스 관리 시스템은 파일 시스템의 문제점을 해결하기 위해 등장한 시스템으로, 데이터베이스의 내용을 정의, 조작, 제어할 수 있도록 함으로서 다수의 사용자와 응용프로그램들이 데이터베이스의 내용을 공유할 수 있도록 운영 및 관리를 하는 소프트웨어 시스템입니다. DBMS는 사용자와 데이터베이스의 중계 역할을 합니다.

 

2) DBMS의 기능

정의기능(Definition Facility): 저장할 데이터의 형태 및 구조와 데이터베이스의 구조에 대해 정의합니다. 이렇게 정의된 것은 시스템 카탈로그의 형태로 저장됩니다.

조작기능(Manipulation Facility): 데이터베이스를 이용할 수 있도록 사용자의 요구에 따라 데이터의 검색 및 삽입, 삭제, 갱신 작업을 가능하게 해줍니다.

- 제어기능(Control Facility): 데이터의 무결성 유지, 보안, 병행 수행제어 기능을 제공하여 데이터베이스의 안정성을 유지합니다.

 

3) DBMS의 장점

자료와의 관계성을 정의하기 때문에 자료 통합성이 증가됨

- 데이터의 중복성과 종속성 최소화 시킵니다.

- 다수 사용자 간의 데이터 공유가 가능합니다.

- 데이터의 무결성과 일관성을 유지합니다.

- 권한과 보안 기능을 지원하여 데이터의 보안성이 높습니다.

 

4) DBMS의 단점

- 파일시스템에 비해 경제적으로 비용이 많이 들어갑니다.

- 한 부분에 장애가 생기면, 전체 시스템에 영향을 주는 취약성이 있음

- 자료 처리가 파일 시스템에 비해 복잡하니다.

- 시스템의 성능에 따라 DBMS가 좌우됩니다.

 

5) 종류

IMS, CODASYL DB, DB2, ORACLE, INFORMIX, SYBASE, INGRES, MS-SQL, Objectivity, O2, Versanat, Ontos, Gemstone, Unisql, Object Store, Starburst, Postgres, Tibero, MySQL

 

 

2. 데이터베이스 이용자

데이터베이스는 여러 유형의 사용자들이 이용합니다.

- 일반 사용자(End User): 데이터를 검색하고, 필요한 자료들을 데이터베이스에 삽입, 갱신, 삭제하는 목적으로 이용하는 사람입니다.

- 응용 프로그래머(Application Programmer): 데이터베이스를 활용하며, 사용자 인터페이스를 제공하는 일을 합니다.

- 데이터베이스 관리자(DataBase Administrator): 데이터베이스 전체에 대한 설계와 조작에 관한 책임을 맡습니다. 또한 보안, 권한 부여, 유효성 검사 등을 수행하며, 무결성 유지를 위한 관리를 합니다.

- 데이터 관리자(Data Administrator): 데이터 관리를 총괄합니다. 조직 내에서 데이터에 대한 정의, 체계화, 감독 및 보안 업무를 담당합니다.

- 데이터 설계자(Data Architect): 조직의 업무 수행에 필요한 데이터의 구조를 정의하는 사람입니다.

1. 데이터베이스 언어

데이터베이스 언어의 종류로는 DDL, DML, DCL이 있습니다.

- 데이터 정의어(Data Definition Language, DDL): 데이터베이스의 구조, 데이터의 형태, 접근방식을 정의, 수정, 삭제하는데 쓰이는 언어입니다.

[예시]

CREATE: 데이터를 저장할 테이블을 생성하는 명령어

ALTER: 데이터를 저정한 테이블의 구조를 변경하는 명령어

DROP: 데이터가 저정된 테이블을 삭제하는 명령어

 

- 데이터 조작어(Data Manipulation Language, DML): 데이터베이스 내에 자료들을 검색하거나 삽입, 수정, 삭제하는 언어입니다.

[예시]

SELECT: 원하는 조건에 따른 데이터를 검색하는 명령어

INSERT: 데이터베이스에 데이터를 저장하는 명령어

UPDATE: 저장된 데이터를 갱신하는 명령어

DELETE: 저장된 데이터를 삭제하는 명령어

 

- 데이터 제어어(Data Control Language): 데이터의 정확성과 안전성을 유지하기 위해, 무결성 유지, 회복, 병행 제어, 보안, 권한 기능을 수행하는 언어입니다.

[예시]

COMMIT: 한 트랜잭션에서 데이터 조작이 정상적으로 완료되었으면, 그 결과를 데이터베이스에 반영하는 명령어

ROLLBACK: 트랜잭션 내에서 데이터를 수정하는 도중 이상이 생겼을때, 변경하기 이전으로 돌아가는 명령어

GRANT: 사용자에게 권한을 부여하는 명렁어

REVOKE: 부여된 권한을 취소하는 명령어

 

 

2. 시스템 카탈로그(System Catalog)

1) 시스템 카탈로그 정의

시스템 카탈로그는 데이터 사전(Data Dictionary)이라고도 부르며, 데이터베이스에 저장된 모든 데이터 요소들(테이블, 뷰, 제약조건, 사용자 등)에 대한 정보를 저장한 것입니다.

시스템 카탈로그에 저장된 데이터들메타 데이터(Meta Data)라고 부릅니다.

 

2) 시스템 카탈로그 특징

- 시스템 테이블의 형태로 구성되어있습니다.

- 사용자가 SQL문을 실행시켜 테이블,뷰,인덱스,제약조건 등에 변화를 주면 DBMS에 의해 시스템 카탈로그 내용 갱신이 자동적으로 이루어집니다.

- 일반사용자는 시스템 카탈로그의 내용을 검색할 수 있지만, 시스템 카탈로그의 내용들을 변경하는 것은 불가능합니다.

 데이터베이스는 개체, 속성, 관계라는 구성요소가 있습니다.


1. 개체(Entity)

 개체란 데이터로 표현하고자 하는 현실 세계의 대상체입니다. 이는 현실 세계에서 사람이 생각하는 개념 및 정보의 단위가 되며, 서로 구별이 가능합니다. 이러한 개체는 하나 이상의 속성으로 구성됩니다. 개체의 종류로는 독립 개체, 종속 개체가 있습니다.

[예시] 한 회사 내에서 일을 하고있는 직원 한명한명, 서점에 있는 책 한권학권 등등

- 독립 개체(Independant Entity):  다른 개체에 종속되지 않고, 스스로 존재할 수 있는 개체입니다.

- 종속 개체(Dependent Entity): 부모 개체로 불리는 다른 개체 집합의 존재에 존재성이 의존되는 개체입니다. 자식 개체라고도 부릅니다.

[예시] 각각의 학생에 대한 정보를 기록해놓은 데이터베이스가 있을때, '가족 사항'이라는 개체는 '학생'개체에 종속된 종속개체입니다.

 

※ 개체 집합: 같은 형태를 가진 개체들을 모은 집합

[예시]

- 학생, 교수, 교직원 개체는 '사람'이란 집합이 됩니다.

- 전자공학과, 기계공학과, 국문학과, 영문학과, 철학과 개체는 '학과'라는 집합이 될 수 있습니다.

 


2. 속성(Attribute)

 

 속성은 저장할 필요가 있는 개체에 관한 정보로, 개체의 특성 및 상태를 기술합니다. 이러한 속성은 데이터베이스를 구축하는 가장 작은 논리적 단위이며, 속성 하나만으로는 대상을 구분하기 어렵습니다. 속성의 종류로는 단순 속성, 복합 속성, 파생 속성이 있습니다.

[예시] 서점의 책이 개체라면, 속성은 책의 서명, 저자, 분류, 가격, 출판사가 될 수 있습니다.

 - 단순 속성: 값을 더이상 나눌 수 없는 속성입니다.

- 복합 속성: 2개 이상의 의미있는 값으로 분해할 수 있는 속성입니다.

[예시] 주민등록번호 전체를 저장하는 속성의 경우, '주민등록번호 앞자리'와 '주민등록번호 뒷자리'로 나뉠 수 있습니다.

 


3. 관계(Relation)

 2개 이상의 개체간의 연관성입니다. 주로 동사의 형태로 표현됩니다. 관계는 사상수에 따라 1:1(일 대 일), 1:n(일 대 다), N:M(다 대 다)로 구분할 수 있습니다. 또한 한 관계에 연관된 개체집합의 차수에 따라 일진관계성, 이진관계성, 삼진관계성등으로 구분되어집니다.

[예시] 사장이란 개체와 사원이란 개체는 '고용'이란 관계에 있습니다. 학생과 과목사이에는 '수강'이란 관계가 있습니다

 

- 1:1 관계: 개체로 구분되는 사람과 그 사람의 주민등록번호의 관계.

 




- 1:n 관계: 한 음식점과 음식점 메뉴의 관계



- n:m 관계: 여러 전공들과 여러 학생들의 관계

 

- 일진 관계성(Unary Relationship): 하나의 개체 집합에서만 관계가 있습니다. 이를 순환관계성(Recursive Relationship)이라고도 합니다.

[예시] '사람'이란 개체집합 사이에서 '결혼'이란 관계가 있습니다.

 

이진 관계성(Binary Relationship): 2개의 개체집합 사이의 관계를 말합니다.

[예시] '학생'이란 개체집합과 '과목'이란 개체집합에서 '수강' 관계가 있습니다.

 

삼진 관계성(Binary Relationship): 3개 이상의 개체집합에 관한 관계입니다.

[예시] '학생', '과목', '교수'라는 3개의 개체집합 간의 관계

1. 데이터베이스 도입 배경

파일시스템을 통하여 데이터들을 저장하고 처리할 수 있었지만, 파일 시스템에서는 독립된 파일 단위로 데이터들을 저장하였기 때문에, 데이터의 중복성(Data Redundancy)데이터의 종속성(Data Dependency)이 발생한다는 문제가 있었습니다. 결국 이것은 데이터의 무결성(Integrity)를 위배하는 결과를 가져오게 됩니다. 그래서 이러한 파일시스템의 문제점을 해결하기 위해 도입된 시스템이 데이터베이스 시스템입니다.


※데이터 중복성(Data Redundancy): 한 시스템이 같은 내용의 데이터가 여러 파일에 중복된 채 저장되어 관리되는것. 데이터 중복성은 한 데이터가 수정되면 중복된 데이터들을 모두 수정해야하는 불편함을 주며, 만일 일부만 수정되었을 경우 불일치성을 야기합니다. 또 저장공간의 낭비도 야기하게 됩니다.

[예시] 어느 회사에서 '영업부'에 '김영희'라는 이름의 사원이 있다고 가정합니다. 이 사원의 이름, 부서정보를 A파일과 B파일에 저장하였습니다.

여기서 김영희라는 사원의 부서가 영업부에서 '마케팅부'로 변경되었다면, A와 B파일의 데이터 모두를 갱신해야합니다.

만일 A파일만 갱신되었고 B파일을 갱신하지 않으면 A에서는 김영희의 부서가 마케팅부이지만 B파일에는 여전히 영업부로 남아있는 불일치가 생깁니다.

※데이터 종속성(Data Dependency): 데이터와 응용프로그램이 의존관계가 있는 것. 만일 데이터의 구성이나 접근방법이 변경된다면 관련 응용프로그램의 구조도 변경되어야 한다는 불편함이 있습니다. 

[예시] .hwp파일데이터는 한글 프로그램에서만 읽을 수 있고, .pptx 파일데이터는 프레젠테이션 관련 응용프로그램에서만 실행 가능합니다. 


2. 데이터베이스 정의

데이터베이스는 여러 사용자나 응용 프로그램이 공용으로 사용되는것을  통합 저장되어 관리하는 운영상의 데이터 집합을 말합니다.

- 통합된 데이터(Integrated Data): 자료의 중복을 배제 또는 최소화 한 데이터의 집합

- 저장된 데이터(Stored Data): 컴퓨터가 접근할 수 있는 저장매체에 저장되어 사용자나 응용 시스템이 언제든지 이용할 수 있는 데이터 집합

- 운영 데이터(Operational Data): 조직의 운영에 없어서 안되는 필수적인 데이터들의 집합

- 공용 데이터(Shared Data): 다수의 사용자 및 응용시스템이 공유하는 데이터들의 집합


3. 데이터베이스의 특징

- 계속적인 변화(Continuous Evolution): 데이터의 삽입, 갱신, 삭제 작업을 통해  항상 최신의 데이터를 유지합니다.

- 실시간 접근(Real Time Accessibility): 질의(Query)에 대해 실시간 처리 및 응답을 하여, 사용자가 원한다면 언제든지 접근할 수 있습니다.

- 동시 공유(Concurrent Sharing): 여러 사용자가 동시에 사용할 수 있습니다.

- 내용에 의한 참조(Content Refence): 데이터의 물리적 주소가 아닌 내용, 즉 데이터의 값에 의한 참조를 할 수 있습니다.

[예시] 사람들의 이름과, 그에 사람의 전화번호가 저장되어있는 데이터베이스가 있습니다.

여기서 '홍길동'이란 사람의 전화번호를 찾을때, 이 데이터가 저장되어있는 물리적인 주소를 가지고 찾는것이 아니라, 질의문에 '홍길동'이라는 값을 넣어 이름을 가지고 검색할 수 있습니다.

- 데이터 중복의 최소화(Redundancy Minimize): 동일 데이터의 중복을 최소화합니다.


1. 배열

[배열의 생성]

- 대괄호([])로 생성

- 대괄호 사용 후 안에 쉼표로 구분하여 자료를 입력

ex)

<script>

//변수를 선언합니다

var array = [225 , 100, 32 ,58];

</script>

 

[배열의 구성]

- 배열은 인덱스와 요소로 구성되어 있다.

- var fruit = ['사과', '오렌지', '딸기', '망고', '바나나'] 라는 배열이 있을 경우, 0번 인덱스의 요소는 사과, 3번 인덱스의 요소는 망고이다.

 

2. 객체

- 객체는 요소에 인덱스로 접근하는 배열과 달리, 요소에 키를 통해 접근한다

ex)

<script>

var product = {

제품명: '7D 건조 망고',

유형: '당절임'

성분: '망고, 설탕, 메타중아황산나트륨, 치자황색소',

원산지: '필리핀'

};

</script> 

 

[객체의 사용과 객체의 키]

- 객체 뒤에 대괄호를 사용하고 키를 표시하여 요소에 접근한다

ex)

product['제품명'] → '7D 건조 망고'

product['성분'] → '망고, 설탕, 메타중아황산나트륨, 치자황색소'

 

- 객체 뒤에 마침표를 사용한다

ex)

product.제품명 → '7D 건조 망고'

product.성분 → '망고, 설탕, 메타중아황산나트륨, 치자황색소'

 

여기서 공백과 같이 식별자가 아닌 문자가 있는 키 이름은 마침표를 통해 접근이 불가능하며 오로지 대괄호를 통해서만 접근가능 하다.

ex)

object['white space']

 

 

[객체의 속성]

- 객체 내부에 있는 값 (요소는 배열 내부에 있는 값이다)

ex)

var object = {

number: 273,

string: 'RintIanTta'

boolean: true

}

여기서 object객체의 속성들은 number, string ,boolean이 있다.

 

 

[메소드]

- 객체의 속성 중 함수 자료형인 속성을 말한다

ex)

<script>

var person = {

name: '윤인성',

eat: function (food) { }

}

person.eat();

</script>

여기서 eat속성은 함수 자료형이므로 eat()매소드라 부른다.

 

 

[객체와 반복문]

- 객체는 단순 for 반복문으로 객체의 속성을 살펴보는 것이 불가능하다. 그래서 대신 for in을 사용하여 객체의 속성들을 모두 살펴볼 수 있다.

ex)

<script>

var product = {

제품명: '7D 건조 망고',

유형: '당절임'

성분: '망고, 설탕, 메타중아황산나트륨, 치자황색소',

원산지: '필리핀'

};

var output='';

for ( var key in product) {

output += '*' + key + ': ' + product[key] + '\n';

}

alert(output);

</script>

 

출력은

*제품명: '7D 건조 망고',

*유형: '당절임'

*성분: '망고, 설탕, 메타중아황산나트륨, 치자황색소',

*원산지: '필리핀'

로 나온다

 

 

[객체의 속성 추가와 제거]

- 동적으로 속성을 추가하거나 제거할 수 있다

ex)

<script>

var student = {};

student.이름 = '윤인성';

student.취미 = '악기';

student.특기 = '프로그래밍';

student.장래희망 = '생명공학자';

</script>

 

-동적으로 메소드를 추가하거나 제거할 수 있다

ex)

<script>

var student = {};

student.이름 = '윤인성';

student.취미 = '악기';

student.특기 = '프로그래밍';

student.장래희망 = '생명공학자';

 

student.toString = function () {

var output = '';

for (var key in this) {

if ( key != 'toString' ) {

output += key + '\t' + this[key] + '\n';

}

}

return output;

};

 

//출력

alert(student.toString() );

</script>

 

- 속성의 제거는 delete 키워드를 사용하여 할 수 있다. 이 키워드 뒤에 삭제하고자 하는 객체의 속성을 입력하여 지울 수 있다.

1. 타이머 함수

- 특정한 시간에 특정한 함수를 실행가능하게 한다.

- 타이머 함수 종류 

메서드 이름 

설명 

 setTimeout(function, milisecond)

 일정 시간 후 함수를 한번 실행

 setInterval(function, milisecond)

 일정 시간마다 함수를 반복해서 실행

 clearTimeout(id)

 일정 시간 후 함수를 한 번 실행하는 것을 중단시킴

 clearInterval(id)

 일상 시간마다 함수를 반복하는 것을 중단시킴

 

2. 인코딩과 디코딩 함수

- 인코딩: 문자를 컴퓨터에 저장 혹은 통신에 사용할 목적으로 부호화 하는 방법

- 디코딩: 인코딩을 원래대로 되돌려 놓는 것

함수 이름

설명 

 escape()

 적절한 정도로 인코딩합니다 

 unescape()

 적절한 정도로 디코딩합니다

 encodeURI(url)

 최소한의 문자만 인코딩합니다

 decodeURI(encodedURI)

 최소한의 문자만 디코딩합니다

 encodeURIComponent(urlComponent)

 대부분의 문자를 모두 인코딩합니다

 decodeURIComponent(encodedURI)

 대부분의 문자를 모두 디코딩합니다

 

[escape( )]

- 영문 알파벳, 숫자, 일부 특수문자(@, *, -, _, +, ., /)를 제외하고 모두 인코딩

- 1byte문자는 %XX의 형태로, 2byte문자는 %uXXXX형태로 변환

 

[encodeURI( )]

- ecape()함수에서 인터넷 주소에 사용되는 일부 특수문자( :, ;, /, =, ?, &)는 변환하지 않음

 

[encodeURIComponent( )]

- 알파벳과 숫자를 제외한 모든 문자를 인코딩

- UTF-8인코딩과 같음

 

인코딩은 초기에 escape()함수만 있었으나, 시간이 지남에 따라 진화했다. 현재는 encodeURIComponent()함수를 가장 많이 사용하고 있다.

 

 

3. 코드 실행 함수

 - 자바스크립트는 문자열을 코드로 실행할 수 있는 특별한 함수를 제공한다.

함수 이름 

 설명

 eval(string)

 string을 자바스크립트 코드로 실행한다 

 

 

4. 숫자 확인 함수

- 변수의 숫자가 Infinity와 NaN(Not a number)와 같은 특별한 숫자인지 확인하는 함수

- 대부분의 프로그래밍 언어는 0으로 숫자를 나누면 오류가 발생하며 프로그램이 멈추지만, 자바스크립트는 0으로 숫자를 나누면 infinity값이 들어간다 

함수 이름 

설명 

 isFinite()

 number가 무한한 값인지 확인한다

 isNaN()

 number가 NaN(숫자가 아닌 값)인지 확인한다

 

 

5. 숫자 변환 함수

 함수 이름

설명 

 Number()

 객체를 숫자로 바꾸어준다

 parseInt(string)

 string을 정수로 바꾸어준다

 parseFloat(string)

 string을 유리수로 바꾸어준다

- 여기서 Number의 경우 숫자로 바꿀 수 없으면 NaN으로 변환하다는 단점이 있다

ex)

<string>

var won = '1000원';

var dollar = '1.5$';

alert(Number(won) + ' : ' + Number(dollar));

</script>

이 경우 alert창에서 "NaN, NaN"이 출력된다.

반면 parseInt를 사용했을 경우 "원"과 "$"를 제외하고 숫자만 고려하여 "1000 : 1"이,

parseFloat를 사용했을 경우 "1000 : 1.5"가 출력된다.

 

 

6. 문자열 변환 함수

함수 이름 

설명 

 String()

객체를 문자로 변환하여 출력

 

 

7. 가변인자 함수

- 매개변수의 개수가 변할 수 있는 함수

- 대표적으로 Array()함수가 있다

- Array함수의 형태

함수 형태

설명

 Array() 

 빈 배열을 만든다

 Array(number)

 매개변수 만큼의 크기를 가지는 배열을 만든다

 Array(any, ..., any) 

 매개변수를 배열로 만든다

 

 

'Java Script' 카테고리의 다른 글

JS 테스트  (0) 2022.10.10
자바스크립트 함수  (0) 2016.05.08
자바스크립트의 자료형  (0) 2016.05.08
자바스크립트 키워드와 식별자  (0) 2016.05.08
자바 스크립트(Java Script)에 대해  (0) 2016.05.07

1. 함수란?

- 함수는 프로그램에서 특정 작업을 하기 위해 독립적으로 만들어진 하나의 단위를 의미한다.

- 함수는 일반적으로 특정한 일을 하도록 모아 놓은 코드의 집합체이다.

 

2. 익명 함수

- function() {}의 형태인 함수이나 이름이 없다.

- 생성 방법 예시

<script>

var func = function(){

var output=prompt('숫자를 입력해주세요.', '숫자');

alert(output);

}

func();

</script>

 

3. 선언적 함수

- 이름이 있는 함수

- 생성방법 예시

<script>

function printABC() {

alert("ABC");

}

</script>

 

 

4. 가변인자 함수

- 자바스크립트는 모든 함수가 기본적으로 내부 변수 arguments를 가진다.

- arguments는 매개변수의 배열이며, 이 arguments 객체를 사용해서 가변함수를 사용할 수 있다.

- 사용 예시

<script>

function sumAll(){

var output = 0;

for( var i=0; arguments.length; i++ ) {

output += arguments[i];

}

return output;

}

alert( sumAll(10,20,30,40,50,60,70,80,90,100) );

</script>

 

 

5. 콜백함수

- 매개변수로 전달하는 함수를 전달하는 함수이다.

- 사용 예시

<script>

//함수 선언

function callTenTimes(callback) {

for (var i=0; i<10; i++){

callback();

}

}

 

//익명함수를 담는 변수 선언

var callback = function() {

alert('함수 호출');

};

 

//함수 호출

callTenTimes(callback);

</script>

 

 

6. 함수를 리턴하는 함수

- 사용 예시

<script>

function returnFunction() {

return function() {

alert('Hello Function!');

};

}

returnFunction()();

</script>

'Java Script' 카테고리의 다른 글

JS 테스트  (0) 2022.10.10
자바스크립트 내장 함수  (0) 2016.05.08
자바스크립트의 자료형  (0) 2016.05.08
자바스크립트 키워드와 식별자  (0) 2016.05.08
자바 스크립트(Java Script)에 대해  (0) 2016.05.07

1.자바스크립트의 자료형

자바스크립트에선 어떤 자료형이 있는지 알아보자

 

[문자열]

- ""나 ''사이에 들어가는 문자를 의미

- 예외적인 문자열 사용법 :

1) 내부에 작은 따옴표 사용 시 외부에 큰 따옴표 ex) "문자열 'string' "

2) 내부에 큰 따옴표를 사용 시 외부에 작은 따옴표 ex) '문자열 "string" '

3) 이스케이프 문자의 사용

이스케이프 문자 종류

 이스케이프 문자

설명 

 \t

 수평탭 

 \n

 줄바꿈 

 \'

 작은 따옴표

 \"

 큰 따옴표

 \\

 역 슬래시

만일 큰 따옴표 안에서 또 큰 따옴표를 쓰고 싶다면 이스케이프 문자를 사용할 수 있다.

 

[숫자]

- 정수와 유리수 구분 없이, 자료형의 선언없이 사용 가능

- 정수: 기본은 10진수. 처음숫자가 0일 경우 8진수로, 0x로 시작할 경우 16진수로 인식한다.

 

[boolean]

 true와 false 두 가지 값을 가지는 자료형

 

[자료형 확인법: typeof]

typeof함수를 사용하여 자료형을 확인할 수 있다.

ex)

<script>

alert( typeof('String') );

alert( typeof(273) );

</script>

 

 

2. 변수

변수란 값을 저장할 때 사용하는 식별자이다. 자바스크립트에서는 숫자 뿐만 아니라 모든 자료형을 저장 가능하다.

[선언 방법]

var 식별자

ex)

<script>

// 변수를 선언합니다.

var pi;

</script>

'Java Script' 카테고리의 다른 글

JS 테스트  (0) 2022.10.10
자바스크립트 내장 함수  (0) 2016.05.08
자바스크립트 함수  (0) 2016.05.08
자바스크립트 키워드와 식별자  (0) 2016.05.08
자바 스크립트(Java Script)에 대해  (0) 2016.05.07

1. Java Script의 키워드(keyword)

[키워드란?]

자바 스크립트가 처음 만들어질 때 정해진, 특별한 의미가 있는 단어이다. 모든 브라우저에서 아래와 같은 키워드들을 지원하며, 이 키워드들은 식별자로 정의할 수 없다.

 

[자바스크립트의 키워드 종류]

break, if, else, instanceof, true, false, switch, case, default, try, catch, finally, null, typeof, continue, for, return, var, new, function, void, delete, this, while, do, in, throw, with 

 

[미래에 사용될 가능성이 있는 자바스크립트 키워드]

abstract, boolean, byte, char, class, const, debugger, double, enum, export, extends, final, float, goto, implements, imports, int, interface, long, native, package, private, protected, public, short, static, super, synchronized, throws, transient, volatile

-W3c에서는 자바스크립트 프로그램 작성 시 위의 키워드들을 사용하지 않기를 권고하고 있고, 이 중 일부 키워드는 이미 몇몇 브라우저에서 사용되고 있다.

 

 

2. Java Script의 식별자

[식별자란?]

변수나 함수의 이름이 될 수 있는 프로그래머가 선언하는 단어.

 

[식별자 생성시 규칙]

- 키워드 사용불가

- 숫자로 시작 불가

- 특수 문자는 _와 $만 허용

- 공백 포함불가

 

[식별자 생성할 때의 관례]

- 모든 언어가 사용 가능하나 알파벳 사용이 관례

- 의미 있는 단어 사용

- 생성자 함수의 이름은 대문자로 시작

- 변수와 인스턴스, 함수, 메소드 이름은 소문자로 시작

- 식별자가 여러 단어로 이뤄지면 각 단어의 첫 글자는 대문자

 

[자바스크립트의 식별자 종류]

 구분

단독으로 사용

다른 식별자와 사용 

 식별자 뒤에 괄호 있음

 변수

속성 

 식별자 뒤에 괄호 없음

 함수

메서드 

ex)

alert('aaa') -> alert은 함수

Array.length -> length는 속성

input -> input은 변수

Math.abs(-200) -> abs는 메서드

 

 

'Java Script' 카테고리의 다른 글

JS 테스트  (0) 2022.10.10
자바스크립트 내장 함수  (0) 2016.05.08
자바스크립트 함수  (0) 2016.05.08
자바스크립트의 자료형  (0) 2016.05.08
자바 스크립트(Java Script)에 대해  (0) 2016.05.07

+ Recent posts