728x90
반응형

이번 포스팅에서는 Mysql에서 Sql문을 사용해서 데이터를 CRUD하는 방법에 대해 알아보려고 합니다.


일단 CRUD는 Create(생성), Read(읽기), Update(갱신), Delete(삭제)의 앞글자만 따서 CRUD라고 부릅니다.


먼저 읽기에 대해 알아보겠습니다.


여기서 사용할 샘플 데이터는 http://futurists.tistory.com/19를 참고했습니다.


sql에서 읽기는 SELECT명령어를 사용합니다.

문법은 SELECT 열명 FROM 테이블명; 입니다.

열명에 *를 넣게 되면 테이블에서 전체 열을 가져올 수 있고 ,를 사용하게 되면 복수의 열을 가져 올 수 있습니다.


하지만 이렇게 사용하면 테이블에 있는 모든 데이터를 가져오게 되는데 특정 조건에 해당하는 데이터만 가져오기 위해서 WHERE을 추가해 줘야합니다.

문법은 SELECT 열명 FROM 테이블명 WHERE 조건; 입니다.

여기서 조건에 들어가는 비교연산자는 다음과 같습니다.

= 같다

<> 같지않다

>= 크거나 같다

> 크다

<= 작거나 같다

< 작다


SELECT * FROM employees WHERE gender = 'M';

이렇게 명령어를 작성하면 employees 테이블에서 gender가 M인 데이터를 전부 가져오는 것입니다.

특정 조건에 해당하는 데이터만 가져올 수 있게 됩니다.



SELECT * FROM employees WHERE gender = 'M' AND hire_date > '1999-01-01';

이렇게 명령어를 작성하면 employees 테이블에서 gender가 M이며 hire_date가 1991-01-01이상인 데이터만 가져오게 됩니다.

조건에 AND나 OR를 사용하면 여러개의 조건을 붙일 수 있습니다.



데이터를 읽어오면서 정렬을 하기 위해선 ORDER BY 명령어를 추가해주면 됩니다.

SELECT * FROM employees WHERE gender = 'M' AND hire_date > '1999-01-01' ORDER BY hire_date DESC;

데이터를 가져오면서 hire_date를 내림차순으로 가져오게 됩니다.

그럼 가장 처음데이터가 최신이고 마지막데이터는 마지막이 되는 것입니다.



다음은 테이블을 요약하는 함수입니다.

count, sum, avg는 복수개의 값들의 개수, 합, 평균을 계산하는 함수이고

max, min은 복수개의 값중에 최대값과 최소값을 구하는 함수입니다.


SELECT avg(salary) FROM salaries;

salaries테이블의 salary의 평균을 구하는 명령어 입니다.



SELECT max(salary) FROM salaries;

salaries테이블의 salary의 최대값을 구하는 명령어 입니다.



데이터를 그룹화 해서 가져오기 위해서 GROUP BY 명령어를 사용합니다.

SELECT dept_no, count(*) FROM dept_manager GROUP BY dept_no;

dept_no와 count(*)를 dept_manager에서 가져오고 dept_no로 그룹화해서 보여주는 것입니다.


그리고 GROUP BY에서 조건을 걸고 싶다면 HAVING 명령어를 사용합니다.

SELECT dept_no, count(*) FROM dept_manager GROUP BY dept_no HAVING count(*) = 4;


그리고 SELECT 명령어를 사용 할 때 1. SELECT 2. FROM 3. WHERE 4. GROUP BY 5. HAVING 6. ORDER BY 순서대로 써야합니다.



이제 생성(CREATE)를 하는 INSERT 명령어에 대해 알아보겠습니다.

INSERT의 기본 구조는 INSERT INTO 테이블명 VALUES 데이터; 입니다.

우선 DESC dempartments;로 테이블의 형태를 보겠습니다.

dept_no는 char(4)타입이며 primary key입니다.

dept_name은 varchar(40)타입입니다.


SELECT * FROM departments ORDER BY dept_no;로 값들을 확인합니다.


그럼 이제 dept_no가 d010이고 dept_name이 Mobile App인 값을 넣어보겠습니다.

INSERT INTO departments VALUES ('d010', 'Mobile App');

데이터 생성에 성공했습니다.

SELECT * FROM departments ORDER BY dept_no;로 확인해보면

d010에 Mobile App이 추가된 것을 확인 할 수 있습니다.


한번에 복수개를 넣고 싶다면 INSERT INTO departments VALUES (), (), (), ... (); 로 작성하면 됩니다.


이제 데이터를 변경하는 UPDATE에 대해 알아보겠습니다.

UPDATE의 기본 구조는 UPDATE 테이블명 SET 열명 = 값; 입니다.

UPDATE에도 WHERE을 사용해 특정 조건에 해당하는 값만 갱신 할 수 있습니다.


그럼 우리는 d010의 dept_name을 Mobile App에서 Mobile Development로 변경하겠습니다.

UPDATE departments SET dept_name = 'Mobile Deveopment' WHERE dept_no = 'd010';

데이터 변경에 성공했습니다.


SELECT * FROM departments ORDER BY dept_no;로 확인해보겠습니다.


d010의 dept_name이 Mobile App에서 Mobile Development로 변경된 것을 확인 할 수 있습니다.


이제 데이터를 지워보겠습니다.

제거 명령어는 DELETE이고 기본구조는 DELETE FROM 테이블명; 입니다.

저렇게하면 테이블의 모든 데이터가 다 지워지게 됩니다.

그래서 WHERE를 추가해 원하는 조건의 데이터만 지우게 해야 합니다.

그럼 아까 추가한 d010의 데이터를 지워보겠습니다.


DELETE FROM departments WHERE dept_no = 'd010';

데이터 삭제에 성공했습니다.


SELECT * FROM departments ORDER BY dept_no;로 확인해보겠습니다.


데이터가 지워진 것을 확인 할 수 있습니다.



이 다음은 결합에 대해 알아보겠습니다.

결합은 두개이상의 테이블에서 값을 동시에 가져올 때 사용합니다.

그리고 결합에는 내부결합과 외부결합 2가지가 있습니다.


내부결합은 INNER JOIN 테이블명 ON 조건으로 가져옵니다.

예제는 dept_manager 테이블에 departments테이블의 dept_name을 붙여서 가져오는 것을 해보겠습니다.


SELECT dept_manager.*, departments.dept_name FROM dept_manager INNER JOIN departments ON dept_manager.dept_no = departments.dept_no;


INNER JOIN은 FROM에 있는 테이블에 있고 ON뒤에 조건에 만족하는 값들만 가져오게 됩니다.


OUTTER JOIN을 쓰게 되면 FROM에 있는 테이블은 모두 가져오고 OUTER JOIN에 있는 테이블의 값만 추출해서 넣게 됩니다.

기본 형태는 SELECT 열명 FROM 왼쪽테이블 LEFT OUTTER JOIN 오른쪽테이블 ON 조건; 입니다.

이렇게 하면 왼쪽 테이블에 있고 오른쪽 테이블에 없는 것들은 NULL로 들어가게 됩니다.


728x90
반응형

'Development > Database' 카테고리의 다른 글

(DB) 테이블 설계의 기초와 정규형  (3) 2017.09.27
(DB) Mac OS에서 MySQL 설치하기  (0) 2017.09.22
(DB) 관계형 데이터베이스란?  (0) 2017.09.21
(DB) 데이터베이스란?  (0) 2017.09.21
728x90
반응형


테이블 설계의 기초


테이블은 관계형 데이터베이스에서 데이터를 저장하기 위한 저장소 입니다.


테이블을 어떻게 설계 하는지에 따라 성능 차이가 있고 나중에 머리가 아파지는 일이 줄어들게 됩니다.


여기서 말하는 테이블은 2차원 표와 같이 행과 열이 있는 형태입니다. 하지만 단순히 행과 열을 가지고 데이터가 들어가는 것은 아니고 어떠한 규칙이나 공통적인 요소를 모은 집합이라고 생각해야 합니다.


테이블 예

 과목번호

과목명

 강사명 

 CSE001

 데이터베이스 

 에덴 

 CSE002 

 운영체제  

 휴 

 CSE003

 네트워크 

 아담 


이 테이블은 컴퓨터 사이언스 과목을 공통적인 요소로 보고 만든 테이블입니다.


'과목번호', '과목명', '강사명'은 테이블의 속성이라고 불리며 테이블에 어떤 값들이 저장되어야 하는지 나타냅니다.


그리고 '과목번호'는 테이블의 기본기(Primary key)라고 볼 수 있습니다.


기본키는 테이블 설계 원칙 중에 하나인 '반드시 기본키를 설정'를 나타내기 위해 필요한 것입니다.


기본키를 사용하게 되면 데이터의 중복을 방지할 수 있고 유일성을 나타낼 수 있습니다.


또한 유일성을 가지고 있기 때문에 다른 테이블에서 데이터를 찾을 때 사용되기도 합니다.


그러므로 이 기본키 값이 중복이 되면 안됩니다. 만약 중복이 된다면 위에서 말한 내용들이 다 쓸모가 없어질 것입니다.


기본키는 값이 변동되면 안되는데 그 이유는 값의 유일성을 증명하지 못하고 과거의 데이터와 매칭을 할 수 없기 때문입니다.


또한 기본키는 NULL값이 들어 갈 수 없습니다.



정규형


정규형은 테이블을 어떤 기준으로 나눠서 데이터를 관리하게 만들지 기준이 되는 개념입니다.


정규형은 제1정규형부터 제5정규형까지 있습니다.


하지만 제3정규형까지 적용하더라도 어느정도 사용을 할 수 있을 정도의 수준이 됩니다.


제1정규형은 '테이블 셀에 여러개의 데이터를 말자' 입니다.

다르게 말하면 '모든 속성은 원자값을 가져야 한다' 입니다.


 과목번호

 과목명

 강사명 

 CSE001

 데이터베이스 

 에덴 

 CSE002 

 운영체제  

 휴 

 CSE003

 네트워크 

 아담, 휴 


이렇게 네트워크 과목이 아담과 휴 강사가 강의를 한다고 나타낼 수도 있습니다.


하지만 이렇게 하는 것은 관리하기도 어렵고 추천하고 싶은 방법은 아닙니다.


과목 테이블

 과목번호

 과목명 

 CSE001 

 데이터베이스 

 CSE002 

 운영체제 

 CSE003 

 네트워크 


과목 강사 테이블

 과목번호

 과목반 

강사면 

 CSE001 

 A 

 에덴 

 CSE002 

 A 

 휴 

 CSE003 

 A 

 아담 

 CSE003 

 B 

 휴 



이렇게 만들게 되면 한 셀에 여러개의 값이 들어가지 않아서 제1정규형을 지킬 수 있습니다.


제2정규형은 '종속성을 띄고 있는 데이터를 분리하자' 입니다.

다르게 말하면 '키를 제외한 나머지 속성들은 키에만 종속되어야 한다' 입니다.


수강신청 테이블

 학번 

 과목번호 

 신청일 

 학생명

 학과 

 2017012987 

 CSE001 

 2017/09/28 

 배수지

 컴퓨터공학과 

 2017012987

 CSE003 

 2017/09/30 

 배수지 

 컴퓨터공학과 

 2017023112 

 MSE005

 2017/09/30 

 김우빈 

 시각디자인학과 

 2017023114 

 MSE005 

 2017/09/30 

 김고은 

 시각디자인학과 

 2017012987 

 MSE005 

 2017/10/02 

 배수지 

 컴퓨터공학과 


이 경우는 여러개의 속성을 기본키로 만든 경우입니다.


각 데이터들은 각 셀에 데이터가 하나씩 들어가 있기 때문에 제1정규형은 지켜지고 있지만 제2정규형을 지켰다고 볼 수 없습니다.


데이터를 잘 보면 '학번', '학생명', '학과'가 서로 종속성을 보여주고 있습니다.


이렇게 종속성을 보여주는 형태가 있으면 제2정규형이라고 말할 수 없습니다.


그럼 종속성이 있는 부분만 따로 빼서 테이블을 만들면 제2정규형을 지킬 수 있습니다.


수강신청 테이블

 학번 

 과목번호 

 신청일 

 2017012987 

 CSE001 

 2017/09/28 

 2017012987 

 CSE003 

 2017/09/30 

 2017023112 

 MSE005 

 2017/09/30 

 2017023114 

 MSE005 

 2017/09/30 

 2017012987 

 MSE005 

 2017/10/02 



학생 테이블

 학번 

 학생명 

 학과 

 2017012987

 배수지 

 컴퓨터공학과 

 2017023112 

 김우빈 

 시각디자인학과 

 2017023114 

 김고은 

 시각디자인학과 


이렇게 구성 했을 때 제2정규형을 지켰다고 말할 수 있습니다.


그리고 데이터를 수정 했을 경우 한개의 테이블로 관리했을 때 수정해야 할 셀이 많지만 두개의 테이블로 관리 한다면 수정해야 할 셀이 적어지게 되고 관리가 편리해 집니다.


제3정규형은 '테이블 안에 두번 이상 연결 된 종속을 가지지 말자' 입니다.

다른 말로 '이행 종속이 있으면 안된다' 입니다.


학생 테이블

 학번 

 학생명 

 학과 

 교수코드 

 교수명 

 2017012987

 배수지 

 컴퓨터공학과 

 PROF001

 김로빈 

 2017023112 

 김우빈 

 시각디자인학과 

 PROF002

 소우진 

 2017023114 

 김고은 

 시각디자인학과 

 PROF002

 소우진


학생 테이블에 교수코드와 교수명이 추가가 되었습니다.


이럴 경우 '학번'이 '교수코드'와 종속관계이고 '교수코드'와 '교수명'이 종속관계이므로 한 테이블에 연결된 종속관계가 존재하게 됩니다.


이럴 경우는 제3 정규형을 지키지 못하는 형태 입니다.


학생 테이블

 학번 

 학생명 

 학과 

 교수코드(FK)

 2017012987

 배수지 

 컴퓨터공학과 

 PROF001

 2017023112 

 김우빈 

 시각디자인학과 

 PROF002

 2017023114 

 김고은 

 시각디자인학과 

 PROF002


교수 테이블

 교수코드

 교수명 

 PROF001 

 김로빈 

 PROF002 

 소우진 


이렇게 두개로 나눌 경우 한 테이블에 연결된 종속관계를 끊을 수 있습니다.


이 때 제3정규형을 지켰다고 말 할 수 있습니다.

728x90
반응형

'Development > Database' 카테고리의 다른 글

(DB) Sql문의 기본 CRUD 및 결합  (0) 2017.10.15
(DB) Mac OS에서 MySQL 설치하기  (0) 2017.09.22
(DB) 관계형 데이터베이스란?  (0) 2017.09.21
(DB) 데이터베이스란?  (0) 2017.09.21
728x90
반응형

이제 실제로 DBMS를 사용하면서 실습을 하고자 합니다.


저는 이번에 공부하면서 MySQL을 사용해보려합니다.


MySQL을 설치하기 위해 MySQL홈페이지에 들어가보겠습니다.


그 다음 MySQL Community Server를 다운받아줍니다.


저는 Mac OS를 사용하기 때문에 Mac OS X을 선택했고 아래 3개중에서 DMG Archive를 선택했습니다.


그리고 회원가입을 해야 할 것 같이 생겼지만 아래에 "No thanks, just start my download."를 클릭하면 다운로드가 진행 됩니다.


다운 받아서 설치해 줍시다.

설치가 마무리 되면 위와 같이 임시 비밀번호를 생성해줍니다.

설치 완료!


설치하고 나서 MySQL 서버를 Start시켜줘야 합니다.

MySQL을 선택해줍니다.

Start MySQL Server 버튼을 선택하여 MySQL Server를 Start합니다.

위와 같이 나오면 성공!


그 다음 터미널을 열고

cd /usr/local/mysql/bin

으로 directory를 변경한 다음

sudo ./mysql -p

로 mysql을 실행합니다.


첫번째 password는 sudo 패스워드

두번째 password는 mysql 설치 할때 받았던 임시 패스워드를 입력합니다.

처음에는 마지막 .을 입력하지 않아서 틀렸습니다. ㅠㅠ


mysql>

라고 나오면 접속 성공!

그리고 우리가 임시로 받았던 패스워드를 수정해보려합니다.


명령어는

set password = password('mypassword');

입니다.

mypassword는 여러분이 사용할 암호를 넣으시면 됩니다.


그다음 변경사항을 적용하기 위해

flush privileges;

명령어를 입력해 줍니다.


그리고

exit

로 종료한 다음 다시 접속하면 자신이 설정한 암호로 접근할 수 있습니다.


그리고 터미널에서 mysql을 매번 /usr/local/mysql/bin에 들어가지않고 사용하기 위해서 PATH에 추가해주시면 좋습니다.

cd

nano .bash_profile

로 .bash_profile파일을 편집해줍니다.


맨 아래에

export PATH=$PATH:/usr/local/mysql/bin

을 추가하고

^x

^y

로 저장하고 나옵니다.


그러면 앞으로 터미널을 켜서 바로 mysql 명령어를 사용할 수 있습니다.

728x90
반응형

'Development > Database' 카테고리의 다른 글

(DB) Sql문의 기본 CRUD 및 결합  (0) 2017.10.15
(DB) 테이블 설계의 기초와 정규형  (3) 2017.09.27
(DB) 관계형 데이터베이스란?  (0) 2017.09.21
(DB) 데이터베이스란?  (0) 2017.09.21
728x90
반응형

데이터베이스란? 라는 글에서 소개 했던 것처럼 데이터베이스에는 몇 가지 종류가 있습니다.


이번에는 그중 관계형 데이터베이스가 어떤 것인지 알아보겠습니다.


관계형 데이터베이스는 RDB라고 부르는데 간단하게 이야기하면 DB들끼리 관계를 맺고있는 형태라 볼 수 있습니다.

관계형 데이터베이스를 사용하는 DBMS의 종류 중에 점유율 Top3는 오라클 데이터베이스, 마이크로소프트 SQL 서버, MySQL 입니다.


여기서 DBMS는 데이터베이스 관리 시스템으로 데이터베이스와는 조금 다릅니다.

데이터베이스는 추상적인 개념으로 기능이나 구조를 나타내는 것이고 DBMS는 이 데이터베이스를 사용하기 위한 프로그램 입니다.


RDB에는 크게 SQL(Structured Query Language)와 Table이 있습니다.


SQL은 RDB에서 데이터 정의, 데이터 조작, 데이터 제어를 하기 위해 사용하는 언어입니다.

대부분 관계형 데이터베이스에서 ANSI/ISO 표준을 최대한 따르고 있기 때문에 SQL 지식을 알고 있다면 다른 DBMS를 사용하는데 크게 거부감이 없습니다.


Table은 RDB의 기본 단위로 데이터를 저장하는 공간입니다. 우리가 흔히 표현하는 행과 열을 가지고 있고 Table을 여러개를 만들어 서로 관계를 맺을 수 있어서 데이터를 나눠서 관리 할 수 있습니다.




출처:

http://www.dbguide.net/db.db?cmd=view&boardUid=148189&boardConfigUid=9&categoryUid=216&boardIdx=134

728x90
반응형

'Development > Database' 카테고리의 다른 글

(DB) Sql문의 기본 CRUD 및 결합  (0) 2017.10.15
(DB) 테이블 설계의 기초와 정규형  (3) 2017.09.27
(DB) Mac OS에서 MySQL 설치하기  (0) 2017.09.22
(DB) 데이터베이스란?  (0) 2017.09.21
728x90
반응형




저는 지금 근무하는 직장의 면접에서 면접 질문으로 나왔던 것이 "경영지원 팀장님에게 데이터베이스가 무엇인지 설명해보세요" 였습니다.


그때 당시 저는 데이터베이스를 잘 몰랐고 결국 질문에 답을 하지 못했습니다.

하지만 붙었습니다...?!


그래서 그때는 몰랐지만 지금은 알아야 할 데이터베이스에 대해 공부하고 정리해보려고 합니다.


데이터베이스는 어떠한 목적을 가지고 체계화된 데이터를 저장하고 조작하는 것을 말하며 우리가 일상에서 쉽게 접할수 있는 Excel이 대표적인 데이터베이스라고 말 할수 있습니다.


하지만 Excel파일은 공유하기가 힘들고 파일 개수가 많아질 경우 관리하기가 어렵고 여러가지 단점이 있습니다.


이를 DBMS라는 것이 관리를 쉽게 도와주고 다른 애플리케이션과 연동하여 데이터를 쉽게 보여줄 수도 있습니다.


그럼 이제 데이터베이스의 기능들에 대해 알아보겠습니다.


- 검색과 갱신

데이터베이스는 크게 검색과 갱신의 기능을 가지고 그 중에서 검색기능은 가장 중요하다고 알려져있습니다. 그리고 갱신은 등록, 수정, 제거로 나뉩니다.

이 4가지 기능을 통해서 데이터를 검색하고, 등록하고 수정하고 삭제를 할 수 있습니다.


- 데이터의 형식

데이터베이스에서 데이터는 어떠한 형식(포맷)을 가지고 관리됩니다.

간략하게 설명하자면 123와 같은 숫자형태와 "블로그"와 같은 문자열 형식을 가지고 있습니다.

그외에도 많은 형식이 있지만 이것은 다음에 알아보도록 하겠습니다.


- 동시성 제어

데이터베이스는 여러 사람이 동시에 접근을 허용하는데 이 부분에서 문제가 발생합니다.


두명의 사람이 동시에 접근했을 때 검색과 갱신을 어떻게 할지에 따라 3분류로 나뉩니다.

1. A가 데이터베이스에 접근하면 B는 접근할 수 없다.

2. A가 데이터베이스에 먼저 접근하면 B는 검색 기능만 사용할 수 있다.

3. A와 B가 동시에 검색과 갱신 기능을 사용할 수 있고 갱신은 마지막 행위만 처리 된다.


1번은 동시에 접근 할 수가 없어서 데이터의 무결성을 지킬수 있어서 안전한 방법입니다.

2번은 동시에 접근은 할 수 있지만 갱신은 A만 할 수 있고 B는 검색을 사용할 수는 있지만 데이터가 최신이라는 보장은 받을 수 없습니다. 

3번은 동시에 접근하여 검색과 갱신을 할 수 있지만 동시에 갱신 할 경우 어떤 데이터가 옳은 데이터인지 판단하기 어렵습니다.


- 장애 대응

데이터베이스는 중요한 데이터들을 모아 둔 장소인데 이 데이터가 사라진다고 생각하면 정말 끔찍할 것입니다.

그래서 이 문제를 대비하기 위해서 데이터 다중화와 백업의 두가지 방법이 있습니다.

데이터 다중화는 데이터들을 여러곳에 분산시켜 사전에 방지하는 것이고 백업은 데이터가 소실 한 경우에 복구하는 방법입니다.

 

- 데이터베이스의 종류

1. 계층형 데이터베이스

2. 관계형 데이터베이스

3. 객체지향 데이터베이스와 XML 데이터베이스

4. NoSQL 데이터베이스


- 데이터베이스의 특징

1. 실시간 접근성

2. 지속적인 변화

3. 동시 공유

4. 내용에 대한 참조

5. 데이터 논리적 독립성


- 데이터베이스의 장점

1. 데이터 중복 최소화

2. 데이터 공유

3. 일관성, 무결성, 보안성 유지

4. 최신의 데이터 유지

5. 데이터의 표준화 가능

6. 데이터의 논리적, 물리적 독립성

7. 용이한 데이터 접근

8. 데이터 저장 공간 절약


- 데이터베이스의 단점

1. 데이터베이스 전문가 필요

2. 많은 비용 부담

3. 데이터 백업과 복구가 어려움

4. 시스템의 복잡함

5. 대용량 디스크로 엑세스가 집중되면 과부화 발생




출처

https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4

728x90
반응형
728x90
반응형

Cordova 환경 구축하기 : http://googry.tistory.com/admin/entry/post/?id=10

이 포스팅은 몇가지 선행작업이 필요합니다.

1. Cordova 환경 구축하기

2. IntelliJ IDEA 설치(WebStorm도 상관없습니다.)


IntelliJ에는 Cordova가 설치되어 있지 않기 때문에 Plugin으로 추가해줘야합니다.


처음 시작화면에서 Configure->Preferences 창을 열어줍니다.


Plugin탭에서 아래에 Browse repositories... 버튼을 눌러 아래 창을 열어줍니다.


Cordova를 검색하여 PhoneGap/Cordova Plugin을 설치하고 IntelliJ를 재실행 시켜줍니다.


첫화면에서 Create New Project를 누르고 아래 창을 열어줍니다.

Static Web탭에 PhoneGap/Cordova App을 선택하고 Next를 눌러줍니다.


Project Name을 입력하고 Finish버튼을 눌러줍니다.


프로젝트가 정상적으로 생성되었습니다.

이제 빌드를 하고 런 해보겠습니다.

Run->Edit Configurations... 을 선택합니다.



저는 Android로 앱을 실행하는데 실제 디바이스에 실행하고자 합니다.

Commen에 run을 Platform에 android를 넣어줍니다.



Run->Run 'Phonegap/Cordova run'을 선택하시면 빌드가 되고 실제 디바이스에 아래와 같이 앱이 실핼됩니다.







728x90
반응형

'Development > Cordova' 카테고리의 다른 글

(Cordova) Build Android Error: spawn EACCES  (0) 2017.07.14
(Cordova) 코도바 시작하기  (0) 2017.07.14
(Cordova) 코도바??  (0) 2017.07.14
728x90
반응형

Error: spawn EACCES


예제 보고 잘 따라하다가 갑자기 이런 에러를 만났다.




에러를 좀더 자세히 보기위해 --verbose를 붙여봤다.


build가 아니라 run인거는 신경쓰지마세요


보니까 Android Gradle쪽에서 뭔가 문제가 발생한것 같았다.



위와 같이 bin 폴더까지 들어가서 gradle권한을 보니 644였다.

chmod 755 gradle 로 권한을 755로 바꿔줬다.


그리고 다시 Cordova Project 폴더로 돌아와서 빌드를 했다.

platforms라는 Directory가 생기고 그 안에 android라는 폴더가 생겼다.



728x90
반응형

'Development > Cordova' 카테고리의 다른 글

(Cordova) IntelliJ IDEA로 Cordova 프로젝트 만들기  (0) 2017.07.14
(Cordova) 코도바 시작하기  (0) 2017.07.14
(Cordova) 코도바??  (0) 2017.07.14
728x90
반응형


코도바 프로젝트를 생성하고 앱을 만들기 위해서는 코도바를 먼저 설치해야한다.


코도바를 설치하기 위해서는 npm이라는 Node.js의 유틸을 사용해야 해서 Node.js가 설치되지 않은 분들은 먼저 Node.js를 설치해야한다.


Node.js가 설치되었다면 본인 OS에 맞게 설치를 한다.


  • on OS X and Linux:

       $ sudo npm install -g cordova
  • on Windows:

       C:\>npm install -g cordova


그 다음에는 프로젝트를 생성한다.


프로젝트는 cordova명령어를 사용해서 생성한다.

$ cordova create hello com.example.hello HelloWorld


명령어를 실행하여 프로젝트를 만들면 아래와 같이 생성이 된다.




CordovaProject라는 Directory에서 hello라는 프로젝트가 생성되었다.

CordovaProejct는 제가 따로 만들었습니다.


그 다음에는 개발하고자 하는 플랫폼을 추가해야한다.


아까 만든 hello Directory로 이동한다.

$ cd hello


그리고 추가하고자 하는 플랫폼을 추가한다.


$ cordova platform add android


아래 명령어를 입력해서 추가된 플랫폼을 확인한다.


$ cordova platform ls


cordova platform command



이제 platform을 추가했고 빌드를 하기전에 필요한 컴파일 또는 sdk가 준비되었는지 확인해보자.

$ cordova requirements

이 명령어를 실행하면 추가한 platform에서 필요한 것들이 있는지 확인해준다.


이렇게 모든 준비가 끝나면 빌드를 해보자.

$ cordova build

이 명령어는 추가한 platform을 모두 빌드 한다는 뜻이다.

$ cordova build android

특정 platform을 빌드하고 싶으면 뒤에 platform name을 붙여준다.




빌드에 성공하면 platforms가 생기고 그 하위에 빌드한 platform 폴더가 생긴다.


이제 만든 샘플을 실행해보자.


$ cordova run android

명령어를 실행하고 빌드에 성공하면 연결된 디바이스에 아래와 같이 나오면 성공이다.



728x90
반응형
728x90
반응형

코도바는 오픈소스 모바일 개발 프레임워크이다. 

이 프레임워크는 웹 기술인 HTML5, CSS3, JavaScript를 사용해 모바일 앱을 만들 수 있다.


이것을 사용하면 각 플랫폼(안드로이드, 아이폰, 블랙베리, 윈도우폰 등등)의 언어와 툴로 개발할 필요없이 한번의 개발로 여러 플랫폼의 앱을 만들 수 있다.

또한 네이티브 레벨의 api를 사용해서 네이티브 앱의 구성요소를 추가적으로 넣어서 개발할 수 있다.



코도바 애플리케이션의 구조는 아래 그림과 같다.



728x90
반응형
728x90
반응형







유스케이스 다이어그램


시스템과 사용자의 상호작용을 다이어그램으로 표현한 것으로 사용자의 관점에서 시스템의 서비스 혹은 기능 및 그와 관련한 외부 요소를 보여주는 것이다.

사용자가 시스템 내부에 있는 기능 중에 어떤 기능을 사용 할 수 있는지 나타내며 유스케이스 다이어그램을 사용함으로써 고객과 개발자가 요구사항에 대한 의견을 조율 할 수 있다.


한마디로 사용자랑 시스템사이에 관계를 나타내는 것으로 볼 수 있다.


유스케이스 다이어그램은 프로젝트에 대한 요구사항을 정의하고 세부기능을 분석하며 개발 범위를 정할 때 작성한다.





구성요소(Component)


유스케이스 다이어그램의 구성요소는 시스템(System), 액터(Actor), 유스케이스(Usecase), 관계(Relation)로 구성되어 있다.


1) 시스템(System)

만들고자 하는 프로그램을 나타낸다.


-표기

유스케이스들을 둘러싼 사각형 틀로 시스템 명칭을 안쪽 상단에 작성한다.



2) 액터(Actor)

시스템의 외부에 있고 시스템과 상호작용을 하는 사람(시스템의 기능을 사용하는 사람), 시스템(시스템에 정보를 제공하는 또 다른 시스템)을 말한다.


-표기

원과 선을 조합하여 사람(졸라맨) 모양으로 표현

액터명은 위나 아래에 표시하며 액터의 역할을 작성한다.



3) 유스케이스(Usecase)

사용자 입장에서 바라본 시스템의 기능

시스템이 액터에게 제공해야 하는 기능으로 시스템의 요구사항을 나타낸다.


-표기

타원으로 표시하고 안쪽에 유스케이스명을 작성한다.

유스케이스명은 "~한다"와 같이 동사로 표현한다.




4) 관계(Relation)


액터와 유스케이스 사이의 의미있는 관계를 나타낸다. 종류는 연관(Association), 의존(Dependency), 일반화(Generalization)이 있으며 의존관계는 포함(Include), 확장(Extend)로 나눠진다.


1. 연관관계(Association)는 유스케이스와 액터간의 상호작용이 있음을 표현한다.

유스케이스와 액터를 실선으로 연결한다.

위 그림은 "사용자"(액터)가 "글을 등록한다"(유스케이스)는 기능과 상호작용이 있다는 것을 나타낸다.



2. 포함 관계(Include)는 하나의 유스케이스가 다른 유스케이스의 실행을 전제로 할 때 형성되는 관계이다.

포함되는 유스케이스는 포함하는 유스케이스를 실행하기 위해 반드시 실행되어야 하는 경우에 적용한다.

포함하는 유스케이스에서 포함되는 유스케이스 방향으로 화살표를 점선으로 연결하고 <<include>>라고 표기한다.

위 그림은 "글을 등록한다" 기능을 동작하기 위해서 "로그인 한다" 기능이 반드시 동작되어야 한다는 것을 나타낸다.



3. 확장 관계(Extend)는 확장 기능 유스케이스와 확장 대상 유스케이스 사이에 형성 되는 관계이다.

확장 대상 유스케이스를 수행 할 때 특정 조건에 따라 확장 기능 유스케이스를 수행하는 경우에 적용한다.

확장 기능 유스케이스에서 확장 대상 유스케이스 방향으로 화살표를 점선으로 연결하고 <<extend>>라고 표기한다.

위 그림은 "글을 등록한다" 기능을 수행 할 때 "파일을 첨부한다" 기능을 선택적으로 수행 할 수 있다는 것을 나타낸다.



4. 일반화 관계(Generalization)는 유사한 유스케이스 또는 액터를 모아 추상화한 유스케이스 또는 액터와 연결시켜 그룹을 만들어 이해도를 높이기 위한 관계이다.

구체적인 유스케이스에서 추상적인 유스케이스 방향으로 끝부분이 삼각형으로 표현된 화살표를 실선으로 연결하여 표현한다.

위 그림은 "글을 검색한다"를 "글쓴이로 검색한다"와 "날짜로 검색한다"로 좀더 구체화 한 것을 나타낸다.




작성 순서

유스케이스 작성 순서로는 1. 액터 식별 2. 유스케이스 식별 3. 관계 정의 이다.


1. 액터 식별

액터는 시스템에 관련이 있는 사용자의 역할과 외부 시스템으로 식별 할 수 있다.


액터를 식별하기 위한 질문?

 - 누가 정보를 제공하고, 사용하고, 삭제하는가?

 - 누가 또는 어떤 조직에서 개발될 시스템을 사용할 것인가?

 - 누가 요구사항에 대해 관심을 가지고, 시스템이 만들어낸 결과에 관심이 있는가?

 - 누가 시스템이 잘 운영될 수 있도록 유지보수 및 관리를 하는가?

 - 개발될 시스템과 상호작용하는 하드웨어나 소프트웨어 시스템은 무엇인가?


2. 유스케이스 식별

액터가 요구하는 서비스, 정보를 유스케이스로 식별 할 수 있고 액터가 시스템과 상호작용하는 행위를 유스케이스로도 나타낼 수 있다.


유스케이스를 식별하기 위한 질문?

 - 액터가 원하는 시스템 제공 기능은 무엇인가?

 - 액터는 시스템에 어떤 정보를 생성, 수정, 조회, 삭제하고 싶어 하는가?

 - 모든 기능 요구사항들을 만족할 수 있도록 유스케이스가 모두 식별 되었는가?


3. 관계 정의

액터간, 유스케이스간의 일반화, 연관관계를 정의하고 유스케이스간의 포함, 확장관계를 정의한다.


관계를 식별하기 위한 질문?

 - 연관 관계: 액터와 유스케이스 간에 상호 작용이 존재하는가?

 - 포함 관계: 유스케이스를 실행하기 위하여 반드시 실행되어야 하는 유스케이스가 존재하는가?

 - 확장 관계: 유스케이스를 실행함으로써 선택적으로 실행되는 유스케이스가 존재하는가?

 - 일반화 관계: 액터 또는 유스케이스가 구체화 된 다른 액터 또는 유스케이스를 가지고 있는가?





출처

https://en.wikipedia.org/wiki/Use_case_diagram

http://littleadventurer.tistory.com/2

http://tawool.tistory.com/129


728x90
반응형

+ Recent posts