Programming2011. 7. 16. 19:33

* UML : 특정언어에 비종속적 객체지향 분석 설계

1. 요구정의
개발자가 개발요구 업체의 업무담당자와 필요한 기능을 나열하는 것이다

대학관리 시스템
1) 학생이 접수처에 수강신청을 한다
2) 교수가 성적을 등록한다
3) 학생이 성적을 확인한다
4) 관리자가 등록금 용지를 발부한다
.......................
누가 --------- 어디서 -------- 뭘할까

2. 분석
3. 설계
4. 구현



* UML프로그램은 여럿 있을거라 생각되는데 그중에서 StarUML을 다운 받아서 해봅시다.





홈페이지 입니다.
좌측메뉴의 StarUML다운로드 클릭



다운로드 페이지입니다.
StarUML 버전 5.0 클릭



아래쪽 staruml-5.0-with-cm.exe를 클릭하여 다운

다운을 완료하면 파일을 실행하여 설치합니다.
설치과정은 특별한게 없습니다. 그냥 표준설치 가이드를 따라서 클릭 몇번 해주면 완료!



처음 실행시 모습입니다.
OK를 누릅시다.



우리는 Use Case Model을 할 겁니다
우측 Model Explorer를 보면 첫번째 항목에 있습니다.
이걸 펼치면 Main 이 보일 겁니다. 이 Main을 클릭 하여 창을 띄웁니다.



Main창이 새로 띄워졌습니다.



이제 촤측의 메뉴들이 처음과는 다르게 바뀌었군요.
우리는 지금 보이는 이것들을 사용하게 됩니다.
우선 Actor을 선택하고 마우스 커서를 Main 창으로 이동합니다.



Main창에서 마우스를 드래그 하면 위의 그림처럼 가상의 박스가 생깁니다.
이것이 Actor 그림의 크기입니다. 적당한 크기가 되었으면 드래그를 멈춥니다.



사람 모양이 생기는군요. 원하는 이름을 네모박스 안에 기입합니다. 



위와 같은 방식으로 3개를 만들어 보았습니다.
그런대 위치가 제각각이군요. 좌측으로 나란히 정렬해 봅시다.
3개의 Actor를 선택합니다. 그런다음에는 
우측 최상단에 작게 붉은색으로 네모박스 표시한게 보이나요? 
이것을 클릭하여 봅시다.



짜잔~! 좌측으로 자동 정렬이 되었습니다. 편하군요...
혹시 크기도 이런식으로 일괄 조절하는 방법 아시는 분은 제보 바랍니다. 
저는 아무리 찾아도 못 찾겠더군요. ㅡ,.ㅡ



다음은 UseCase를 넣어 봅시다.
좌측 메뉴의 UseCase를 선택한 후 Main창에서 마우스 드래그.



마우스 드래그를 하면 위의 그림처럼 UseCase가 생성됩니다.
마찬가지로 사용할 이름을 적어 넣어줍니다.



회원가입, 로그인, 아이디 찾기, 비밀번호 찾기, 관리자 로그인 을 생성했습니다.

이번에는 Actor과 UseCase를 연결하여 봅시다. 둘의 관계는 DirectedAssociation으로 합니다.
이건 상황에 따라서 Generalization으로 할 수도 있고 Dependency등을 할 수도 있습니다.



적당한 위치에 선을 긋습니다.



잘 생성되었군요.



같은 방식으로 나머지것들의 과정도 표시합니다.



완성된 모습입니다.


위와 같은 방식으로 다양한 요구정의를 만들어 주면 됩니다.
로그인, 구매, 상품등록 과정 등 다양한 것들을 만들어 주면 되겠습니다.

Posted by 신의물방울
Programming2011. 7. 16. 19:31
http://blog.naver.com/kottodat?Redirect=Log&logNo=80104635200

몇몇 분들의 요청으로 간략하게 적어보겠습니다만...

제가 UML을 정식으로 배운 것도 아니고 그냥 대충 제멋대로 이해하고 사용하는 것 이기 때문에

실제 정석으로 배운 분들이 보기에 여러가지 잘못된 점이 많이 있을겁니다.

잘못된 부분이 보이거나 의견이 있으시다면 코멘트로 달아주시면 감사하겠습니다.

잘못된 점을 수정하고 좋은 조언을 달게 받아 수정을 하겠습니다.

아참... 스크롤의 압박이 무지 심합니다.

일단 StarUML 프로그램 다운로드 링크입니다.

http://sourceforge.net/projects/staruml/files/staruml/5.0/

프로그램을 다운받아서 설치하시면 되겠습니다.

비지오로 사용하시는 분들은 비지오로 하셔도 무관합니다.

UML로 클래스 다이어그램을 그리는 목적

왜 우리는 클래스 다이어그램을 그려야 하는가.

소스코드를 작정해 놓고 그것만 보고서 구조가 어떻게 되어있고 동작이 어떻게 이루어 지는가를

알아내기는 무척 어렵습니다.

하지만...

이정도만 보면 대충 어떻게 되는지 알 수 있지 않을까요?

여튼 직접 코드를 짜지 않고서도 구조를 어느정도 미리 그려보는 용도도있고

타인이 코드를 직접 분석하는 것 보다 이렇게 다이어 그램을 통해 어떻게 돌아가는지

알 수 있기도 하고 그 외에도 여러가지 이점이 많습니다.

자~ 그럼 이제부터 하나씩 파보도록 하겠습니다.

일단 클래스입니다.

클래스를 만드는 것은 매우 간단합니다.

클래스를 선택하고 드래그 하면 끝이니까요.

그리고 변수와 함수들을 추가해 줍니다.

클래스에 마우스 커서를 대고 오른클릭을 하면 메뉴가 뜹니다.

변수와 함수를 각각 추가해 줍니다.

아참

생성한 클래스명 변수명 함수명은

더블클릭을 하면 아래 그림처럼 에딧창이 나타나면서 변경이 가능합니다.

이녀석의 이름을 바꿔주고 구성품 클래스를 하나 만들어 보겠습니다.

player는 equip를 가지고 있습니다.

하지만 처리를 좀 원할하게 하기 위해서 클래스로 만들었습니다.

그리고 player가 소유한 변수중에 equip라고 있는게 보이시죠?

좀 더 쉽게 예를 들어볼까요?

자동차 바퀴라는 클래스에

휠과 타이어라는 변수가 있습니다.

하지만 휠과 타이어는 각각 여러가지 속성이 존재하죠

제가 차 바퀴에 대해 잘 몰라서 제조회사, 특성 이라고만 적어 놓았지만

타이어의 경우 스노 타이어인지 차종이나 크기 등은 어떤거에 맞는 것인지 등등

여러가지 속성이 있습니다.

그런 모든값을 자동차 바퀴 라는 클래스에 몰아넣는 것은 별로 좋은 생각이 아니라고 봅니다.

그래서 따로 클래스를 만들어서 자동차 바퀴라는 클래스에 포함시키는 것이죠

뭐 간단하고 친절하게 composition이라고 쓰여저 있는걸 선택해서 둘을 이어주면 됩니다.

그 위에 Aggregation이라고 속이 빈 마름모가 보일겁니다.

이건 아주 살짝 다릅니다.

차이점이 하나 존재하거든요

바로 그 클래스가 릴리즈되는 시점의 차이 입니다.

composition의 경우 소유하는 클래스가 죽을때 소유당하는 클래스가 같이 죽지만

aggregaton의 경우에는 소유하는 클래스가 죽을때 소유당하는 녀석들이 같이 죽지 않는다는

차이점이 있습니다.

aggregation의 경우에도 클래스가 다른 한 클래스를 보유한다는 것에는 차이가 없습니다.

하지만!

속이 빈 마름모로 연결을 해 놓을경우 자식(?)보다 부모(?)가 먼저 죽을 수 있습니다.

예를 들면 다음과 같습니다.

맵을 띄울때 맵이 가진 요소들이 있을겁니다.

예로 나무 가로등 건물 등이 있다고 가정하죠

이때 맵은 분명히 오브젝트들을 소유하고 있습니다.

하지만 오브젝트를 읽어서 초기화 하고 삭제하는 일은 맵이라는 클래스가 하지 않습니다.

맵은 리소스 관리자 클래스에게 오브젝트를 읽어달라고 하고 포인터를 받아서 소유합니다.

맵이라는 클래스에서 release라는 함수를 불러서 자신을 릴리즈 할 경우에도

리소스 관리자에게 오브젝츠들을 릴리즈 해달라고 요청하지 않는 이상 오브젝트들은 살아남습니다.

오브젝트들은 자기 소유자가 죽더라도 자신은 죽지 않습니다.

소스코드로 보면 좀 더 이해가 잘 되실까 해서 간단히 적어보겠습니다.

aggregation의 경우 다른 클래스에게서 리소스를 읽어달라고 요청하고 포인터만 받아서 사용하고

자신이 리소스를 릴리즈 하지 않습니다.

하지만 composition의 경우 자신이 직접 리소스를 읽어서 사용하고 자신 스스로 해제해 버립니다.

클래스 자신만 쓰고 버리면 그만인 경우에도

리소스 관리자에게 한번 읽었으면 지금 당장은 사용하지 않더라도 나중에 다시 사용할 일이 있으면

현재 사용하는 리스트만 초기화 해버리고 메니저에게 일일히 해제하라고 이야기 하지 않는 경우가

많이 있습니다.

자주 사용하는것은 남기고 크기가 크거나 자주 쓰지 않는건 물론 자주 릴리즈 해야겠지요

이야기가 삼천포로 좀 빠졌지만...;

다시 돌아와서

이번엔 좀 큰그림을 그려놓고 설명하겠습니다.

일단 graphics라는 package를 하나 바닥에 깔아놓은 것이 눈에 띄죠

저녀석은 namespace입니다.

우리가 자주 사용하는 것 중에 namaspace std라는 것을 자주 사용하죠

그안에 vector map string 등등 우리가 좋아하고 자주 사용하는 것들이 들어있습니다만

저런 이름들은 자주 사용할지도 모르기 때문에 사용하는 것 입니다.

제가 위에 그린 예제도 저녀석들은 하나의 라이브러리로 만들어 놓았다고 가정할 경우

리소스라는 클래스가 있습니다만 물론 gsResource라던가로 하겠지만

혹여 어떤사람이 gsResource라는 클래스를 만들어 버린다던가

설마? 하는 문제를 위해서 라는 의미가 일단 가장 큽니다.

Association 실선으로 이어진 것을 제휴관계라고 하는데요

간단하게 말하자면 '두 클래스가 서로의 정보를 이용한다'라는 정도로 이해하시면 됩니다.

카메라는 자신의 눈에 해당하는 곳의 바로앞에 오게되면 카메라 위치를 강제적으로 옮기거나

못보게 해야하는 곳으로 맞추는 것 등을 방지하던가 맵의 데이터를 많이 사용합니다.

반대로 맵의 경우 카메라의 절두체에 해당하는 곳 밖의 오브젝트들을 그리지 않아야 하고

멀리 있는것이면 폴리곤을 조금 사용하는 대처품으로 교체한다던가 카메라를 강제로 옮기지 않고

카메라의 눈 앞에있는 오브젝트를 반투명하게 한다던가 기타 등등등

카메라의 위치 정보와 절두체 등의 정보를 많이 사용합니다.

서로 상대방이 가진 정보를 사용할 일이 많기 때문에 제휴관계 라고 표시를 해둡니다.

DirectedAssociation 일방적 제휴관계라고 하네요

클라이언트는 graphics라는 녀석중에서 그래픽이라는 facade클래스를 통해 그래픽 데이터를

처리합니다.

일단 이녀석은 라이브러리로서

#include "gsgraphic.h"

pragma commant( lib, "gsgraphic.lib" )

using namespace graphics ;

이렇게 해놓고 쓸 녀석인 만큼 그래픽이라는 클래스에서 클라이언트에 대해 뭔가를 특정하기엔

무리가 있으며 클라이언트쪽에 뭔가 요청하거나 할 일이 없습니다.

클라이언트가 일방적으로 뭔가 넣고 초기화 하라고 시켜서 초기화 하고

말 그대로 하라는 일만 소처럼 열심히 하는거죠

그래서 일방적 제휴라고 하는 것 같습니다.

위 그림처럼 점선으로 이어놓은 것을 Dependency 의존관계 라고 합니다.

지형지물이던 맵이던 이펙트던 스스로 리소스를 파일에서 읽는짓은 하지 못합니다.

왜냐구요?

만약 저녀석들이 각각 리소스를 파일에서 읽는 작업을 한다고 가정하면....

5개 클래스 각각 파일을 읽고 파일의 정보들을 구조체에 담고 분류하는일을 갖고 있어야 할겁니다.

5개 클래스에 동일한 코드와 비슷한코드가 똑같이 박혀있는 것부터가 일단 용납이 안되며

리소스 재사용이나 쌓아둔 양에따라 적당히 잘 안쓰는건 릴리즈 한다던가 하는 관리를 위해서라도

리소스를 관리하는 클래스를 따로 두고 관리해야 하지 않을까 합니다.

일단 딴 이야기는 이쯤 하고...;

클래스의 일부 기능을 타 클래스의 힘을 빌려서 해야할 경우에 의존적이라고 하고

저렇게 점선에 화살표로 표기합니다.

그 외에 의존하는 클래스의 변화에 영향을 받기도 한다고 기억하고 있습니다만

리소스를 읽는 과정 자체가 리소스 클래스가 가지고 있고 리소스 객체의 형태가 변한다면

각자 받아온 값을 활용하는 법도 확실히 바뀌는 일이 있을지 모르겠군요

다음은 Multiplicity입니다. 수량이라는 게죠

맵은 반드시 1개가 존재하고 오브젝트는 0개가 될수도 있고 몇개가 될수도 있습니다.

저런식으로 수치를 넣어주는 것 입니다만...

쓰기 나름입니다.

1 - * 이라고 해도 위 그림과 같은 의미이고

1 - 5 라고 하면 반드시 1개와 5개가 맞물린다는 것입니다.

10개짜리 분산서버와 유져들간의 커뮤니케이션은 10 - * 일테고 말이죠

하지만 이것을 꼭 표기해 줄 필요는 없다고 생각합니다.

대부분 1:1로 맞물리는 경우이고 꼭 필요하거나 강조하고 싶은 부분에서만 표기를 하고

당연하다 싶은 부분은 그냥 생략하는게 좋다고 생각합니다.

reflexive 반사?

클래스들은 자기 자신이 자기 자신과 영향을 주고받을 수도 있습니다.

스크롤의 압박도 심하고 머리도 아픈데 여기서 또 이상한게 나왔네

아... 이건 또 뭡니까? 하시는 분들이 계시겠지만 생각보다 간단합니다.

코드 자체는 엉터리지만 그런건 좀 넘어가 주세요...;

이녀석은 자기 자신을 일방적으로 제휴합니다.

next만 알지 자기 이전에 대해서는 알지를 못합니다.

push함수에서는 자기 다음녀석을 생성해서 값을 써 넣는일만 하겠죠

저런식으로 자기 스스로에게 영향을 미치는 것을 반사~ 라고 합니다.

지금껀 반사 일방적 제휴겠죠 reflexive DirectedAssociation

자기 전과 후의 값을 알면 그냥 반사제휴일테고 말이죠 reflexive Association

그 외에 이런것들이 있습니다.

위 그림은 싱글톤 클래스 입니다.

자기 자신에게 연결된 끝이 마름모꼴인 직선을 주시해 주세요

싱글톤 클래스도 반사제휴의 대표적인 예 입니다.

그 외에도 저 그림을 보고 알아야 하는 것이

myClass *test ;

test = test->getPointer( ) ;

위와같이 코드를 짤텐데 말이죠

저녀석이 static 정적 맴버를 사용한 정적 함수처럼 작동하고 있고

싱글톤 클래스의 포인터를 얻고있다는 의미로 getPointer( ) 와 <<static>>를 표기해 주었습니다.

그 다음

-m_pThis: myClass *

밑줄 underbar은 이 변수가 static 정적 변수라는 것을 의미합니다.

-기호는 이 변수가 private변수라는 것을 의미

맴버 변수의 속성

: myClass *는 m_pThis라는 변수의 변수형이 myClass형 포인터 라는 것을 의미합니다.

함수의 경우

-init( HWND hWnd, int width, int height ) : bool

속성 함수명 인자 : 반환값

위와같은 형식으로 표기가 가능합니다.

음... 거의 끝이 나 가는군요

위 그림은 데이터 팩토링에 대해서 나타난 것입니다.

일단 맵과 오브젝트를 잇는 선에 1 - 0.*이라고 해서 한개의 맵과 다수의 오브젝트가 있을 수 있고

<<Factoring>>라고 표기도 해줬습니다.

그리고 지형 지형지물 캐릭터 클래스를 보면 자기 스스로를 의존하고 있는 반사 의존을 표기해

준 상태인데요 저것은 자기 자신의 메모리를 할당해서 되돌리는 함수를 의존한다는 뜻 입니다.

가능하면 <<메모리를 할당해서 되돌려주는 함수명>>으로 하는 것이 좋을 듯 합니다.

오브젝트 클래스를 보면

오브젝트라는 클래스 이름과 operation1( ) operation2( ) 라는 두개의 함수명이

옆으로 살짝 기울어져 있는 것이 보이실겁니다.

일단 클래스 이름이 기울어져 있는 것은

저것이 추상 클래스로서 인스턴스를 생성하지 않을 것이라는 것을 의미하고

함수 두개의 이름이 기울어져 있는 것은 저 함수들이 가상함수라는 것을 의미합니다.

저런식으로 가상함수와 추상 클래스를 표기해서 인터페이스를 그리는 방법도 있겠지만

저는 자바사용자가 아니고 C++에서는 interface라는 개념도 없어서 인터페이스에 관해서는

자세히 모르겠네요 ;ㅅ;

제 블로그에 있는 정보들은 모두 수정 및 퍼가는것을 제한하고 있지 않으며

오른클릭과 Ctrl + C도 먹으니까 자유롭게 활용하시면 됩니다.

그리고 필요하신 것을 요청하시면 가능한 것이라면 도와드리는 주의랍니다.

마음껏 가져가세요~

Posted by 신의물방울
Computer knowledge2011. 7. 14. 14:52

필요한 준비물

 

1. Microsoft® .NET Framework 버전 1.1

2. Microsoft .NET Framework 버전 2.0 한국어 언어 팩(x86)

 

0xc0000135 오류 없애기 강좌를 시작 합니다.

이 강좌는 매우 쉬어요. 다운로드 링크는 저가 걸어드렸습니다. 글 사이사이에 다운로드 링크 있으니 천천히 읽으면서 다운받으세요. 뭐 다운받으라 할때 그 글앞에 써놓을 께요.

 

일단은  Microsoft® .NET Framework 버전 1.1 이 프로그램을 다운 받습니다.()

그리고 실행 시키시면 무슨 창이 뜹니다. 그리고 다음만 눌러주시기 바랍니다.(처음 시작 그림 죄송합니다.)

 

그러면 다운로드 될텐데 여기서 계속 다운이 다 될때까지 기달려 주세요.

 

그리고 한참후 이런그림이 뜰겁니다.

 

확인 버튼을 누릅니다.

 

이제 Microsoft .NET Framework 버전 2.0 한국어 언어 팩(x86) 를 설치 해주시기 바랍니다.

①()<< 1번파일이 오류 나시면 2번파일로 다운해 주세요.

②()<< 도○○○님이 링크를 걸어주셨습니다.

 

그리고 실행하시면 이런창이 뜰겁니다.

여기서 좀 기달려주세요. 처음 시작화면 그림이 맞나?

 

시작하고 기다리면 이런창이 뜹니다. 다음을 계속 눌러주세요.

 

여기서 동의에 체크 해주시고 다음을 눌러주세요.

 

이제 여기서 기달려 주시기 바랍니다.

 

또 이런창이 뜹니다. 또 기달려주세요.

 

이제 닷넷 프레임 워크가 모두 설치 완료 하였습니다.

완전히 적용하기 위해 컴퓨터를 재부팅 해주시기 바랍니다.

 

여기 까지 따라오시느라 수고 하셨습니다.

이제 0xc0000135 오류는 해결 되었습니다.

 

 

 

깍○○님의  ex) 오류가 나시는분들은 넷프레임워크 3.5로 깔아주세요.

http://www.microsoft.com/downloads/details.aspx?familyid=AB99342F-5D1A-413D-8319-81DA479AB0D7&displaylang=ko

시간은 좀 걸리나, 1.0,2.0,3.5 다 깔립니다.

그래서 0xc0000135 오류에 관한건 모두 해결됩니다.

 

으음... 제가 언젠가부터 답댓글이 없었는데여..

일일히 답글 확인하고 달아주기가 힘들어 앞으로 안달아드리겠습니다

하지만 오류사항이나 궁금한점이 있으면 바로 댓글달아 드리겠습니다.

Posted by 신의물방울
Programming/Database2011. 7. 12. 17:14
■ ERD는 엔티티 간의 관계를 나타내는 그림입니다

ERD(Entity Relationship Diagram: 엔티티 관계도, 개체 관계도)는 DFD(데이터 흐름도)와 함께 시스템 분석과 설계에서 매우 유용하게 사용되는 다이아그램입니다. 

ERD에서 엔터티(entity)란 프로세스 상에 존재하는 데이터 개체로 물리적이거나 추상적인 것을 모두 포함합니다. 엔터티의 예로는 고객, 근로자, 청구서, 상품, 영수증, 창고, 지사, 영업사원 등이 있습니다.

ERD는, 요구사항으로 부터 엔터티를 정의하고, 엔티티 간의 관계를 정의하고, 각 엔티티의 속성을 나타낸 그림입니다.



DFD가 프로세스를 중심으로 데이터의 흐름을 나타내는 그림이라면, ERD는 데이터를 중심으로 데이터 간의 관게를 나타내는 그림입니다. 컴퓨터 프로그램 개발에 비유하자면, DFD는 구조형 프로그램밍(structured programming)에 적합하다면, ERD는 객체지향형 프로그램밍(object oriented programming)에 적합합니다.

예를 들어 '근로자'라는 엔터티가 있다면, 그 엔터티에 속하는 '홍길동'이라는 엔터티 인스턴스가 존재할 수 있다. ERD에서 엔터티는 직사각형으로 그리며, 각 엔터티간의 관계는 좌측 그림에 예시되어 있는 것과 같은 표기방법을 이용하여 관계를 나타내게 됩니다

■ ERD 구성요소

ERD 그림을 구성하는 요소는 엔티티(entity), 관계(relationship), 속성(attribute) 등 3가지가 있습니다.

▶ 엔티티(entity)

엔티티는 시스템을 이루고 있는 사물이나 사건으로, 개체(object)라고도 합니다.
ERD에서 엔티티는 사각형(□)으로 나타내며, 사각형 안에는 엔티티의 이름을 넣습니다.



▶ 관계(relationship)

관계는 엔티티간 간의 연관성을 나타냅니다. 연관성은 '소유하다(own)', '소속된다(belong)'. '첨부되다(attach)' 등이 있습니다. 
ERD에서 관계는, 두엔티티 간을 선으로 연결하고 중간에 마름모(-◇-)로 나타내며, 마름모 안에는 관계의 이름을 넣습니다.
또한 두 엔티티 간의 관계는 1대1, 1대N, N대N가 있으면, N개가 있는 곳은 검고 작은 점(●)으로 표시합니다. 예를 들면 1대1(-◇-), 1대N(-◇-●), N대N(●-◇-●)과 같이 표시합니다.



▶ 속성(attribute)

속성은 엔티티가 가지고 있는 속성 데이터로, 엔티티가 도면이라면, 속성은 작성자, 작성일자. 도면 이름, 도면 번호 등이 될 수 있습니다. 
ERD에서 속성은 엔티티에서 선으로 연결된 동그라미(-○)로 표시됩니다. 동그라미 내에는 속성들을 모두 기술합니다.



■ ERD의 작성방법

ERD의 작성방법은 다음과 같습니다. 

- 업무를 분석하여 엔티티를 찾아내고, 각각 엔티티에 이름을 부여합니다.
- 각각의 엔티티에 대한 속성을 찾아 내어 정리합니다.
- 엔티티를 적절히 배치한 후, 관련된 엔티티 간에 선을 잇고, 관계를 표시합니다.
- 엔티티에 대한 속성을 표시합니다.

■ 모든 속성은 엔티티가 될 수 있습니다.

ERD에서 엔티티의 속성을 정의할 때 주의할 사항이 있습니다. 
예를 들어 위에서 이야기한 도면에 대한 속성으로 작성자, 작성일자. 도면 이름, 도면 번호가 있다고 할 때, 이중에서 작성자를 속성으로 볼 수도 있지만, 엔티티로 정의 할 수도 있습니다. 작성자가 엔티티가 된다면, 작성자의 속성은 이름, 사번, 소속, 전화번호, 전자우편 주소 등이 될 수 있습니다. 또 작성자와 도면 간에는 '생성하다(create)'는 관계가 생기게 됩니다.

작성자를 도면의 속성으로 정의하는 것이 나을지, 다른 엔티티로 정의하는 것이 나을지는 다른 요소를 고려해야합니다. 만약 작성자가 다른 엔티티에서도 사용된다면 엔티티로 만든 후 관계를 맺어 주는 편이 좋고, 다른 곳에서 사용하지 않고, 오직 도면에서만 사용된다면 도면의 속성으로 정의하는 편이 좋습니다.
Posted by 신의물방울
Programming/Database2011. 7. 12. 17:13
출처: www.dbguide.net


1. 데이터 모델
  1.1 데이터 모델의 정의
데이터의 집합을 기술하는데 사용되는 개념이며, 데이터를 조작할 수 있는 연산들의 모임을 의미한다. 데이터는 키(주 식별자)와 일반 칼럼(속성, Attribute)올 표현이 되며 키와 칼럼들이 모인 로우(레코드), 하나 이상의 로우가 모인 테이블(모델링 단계에서는 엔티티)이 되는데, 모든 용어들이 데이터의 표현에 사용된다.
  1.2 데이터 모델의 종류
가. 개념적 모델(Conceptual Model)
현실 세계의 업무규칙(업무처리흐름상의 규칙, 양식 등의 자료를 구성하는 데이터들의 상관관계 규칙)을 개략적으로 데이터 모델을 사용하여 표현을 하되, 각각의 사업장, 부서 등에 대해서 개별적인 데이터 모델이 작성될 수 있다.
나. 논리적 모델(Logical Model)
개념적 데이터 모델을 통합한 것으로써, 각각의 사업장, 부서 등의 데이터를 구성하는 속성들의 
도메인(자릿수, 형태, 초기 값 등)이 통합되어 표현 된다. 

논리적 데이터 모델은 특히 다음과 같은 특성을 가지고 있다.
 데이터베이스 설계 시 사용 
 주어진 현실세계로부터 개념의 집합을 명세
 높은 수준의 추상화에서 현실세계를 표현하는 도구
 현실세계를 이해하기 쉽고 해석하기 쉽도록 현실세계를 명세

논리적 데이터 모델의 평가기준은 다음과 같다.
 표현성(Expressiveness) 
 단순성(Simplicity)
 최소성(Minimality)
 정형성((Formality)

다. 물리적 모델(Physical Model)
논리적 데이터 모델과 비교한 물리적 데이터 모델의 특징은 다음과 같다.
 특정 DBMS에 의해 지원됨
 컴퓨터에 의해 처리될 수 있는 데이터 명세를 지원
 종류 : 계층형 모델, CODASYL 모델, 관계형 모델

  1.3 데이터베이스 구축과정으로 본 데이터 모델의 의의
데이터베이스 구축과정은 현실세계의 데이터와 업무를 데이터 모델의 세계로 Mapping시키는 과정이라고 할 수 있다. 데이터베이스는 현실 세계의 데이터와 업무를 그들의 세계로 안내하는데 있어서 그들이 채택한 모델을 통하여 안내한다. 즉, 모델의 표현규칙, 작성규칙을 따라 현실세계의 자료와 업무가 표현된다. 다시 말하면 컴퓨터세계와 현실세계의 연결다리 역할을 하는 것이 바로 이 모델이다. 데이터베이스 관리시스템(DBMS) 또한 이 모델을 근거로 각종 자동화 처리기를 제작했다. 따라서, 데이터베이스 시스템을 구축 시에 필수적으로 그들이 채택한 데이터 모델에 대하여 정통할 필요가 있다. 
2. 데이터 모델링
  2.1 데이터 모델링 절차
다음은 일반적인 데이터 모델링 절차이다. 
일반론적인 데이터 모델링 절차 그림에서 '데이터 모델 콘테스트' 및 '업종별 표준 데이터 모델'의 제작과 관련하여 엔티티 정의, 관계 정의, 엔티티-관계도 작성, 주/부 식별자 정의, 외부 식별자 정의, 세부속성 정의에 대해서만 설명하기로 한다. 나머지 부분들은 일반 책자들에 잘 설명이 되어 있으므로 참고하기 바란다.
  2.2 엔티티 정의
가. 엔티티의 종류
엔티티의 종류는 독립 엔티티(Kernel Entity, Master Entity), 업무중심 엔티티(Transaction Entity), 종속 엔티티(Dependent Entity), 교차 엔티티(Associative Entity, Relative Entity)의 4종류로 분류된다.
1) 독립 엔티티(Kernel Entity, Master Entity)
    사람, 물건, 장소, 개념처럼 원래부터 현실세계에 존재하는 엔티티.
    예) 사원, 고객, 영업부, 창고, 생산계획, 계정과목 … 

2) 업무중심 엔티티(Transaction Entity)
    업무가 실행되면서 발생하는 엔티티
    예) 주문, 납품, 대금청구, 대금지급 … 

3) 종속 엔티티(Dependent Entity)
    주로 1차 정규화(1st Normalization)로 인하여 관련 중심엔티티로 부터 분리된 엔티티
    예) 주문품목, 납품품목 … 

4) 교차 엔티티(Associative Entity, Relative Entity)
    다:다 관계를 해소하려는 목적으로 인위적으로 만들어진 엔티티 

나. 엔티티의 자격조건
엔티티의 종류는 독립 엔티티(Kernel Entity, Master Entity), 업무중심 엔티티(Transaction Entity), 종속 엔티티(Dependent Entity), 교차 엔티티(Associative Entity, Relative Entity)의 4종류로 분류된다.

다. 엔티티의 예
다음 표는 엔티티의 사례를 보여주는 표이다.
① 사람 (사원(직원, 행원, 공원,…), 계약자(가입자, 회원,…), 이용자(학생, 환자,…))
② 물건 (재료(부품, 원자재, 연료, …), 상품(제품,…), 시설(건물, 창고, 운송센터,…), 지점(영업소, 소매점,…))
③ 사건 (계약(수주,발주,…), 작업(공정, 보관, 선전, 광고,…), 사고(재해, 고장,…))
④ 장소 (구획(창고, 선반, 진열케이스, 생산라인, …), 지역(판매구역, 관할구, 선거구,…), 하천, 항만(부두, 선창,…))
⑤ 개념 (목표, 계획(지침, 방침, 지표, 판매목표, 생산계획, 판매계획, 인원계획,…), 시간(월, 일, 년, 시각, 시각분할,…), 평가(기준, 지표))
⑥ 금전 (예입금(구좌,…), 예산(년간예산, 수정예산, 실행예산,…), 차입(단기, 장기,…), 융자(단기, 장기,…))

  2.3 관계(Relationship) 정의
가. 기수성(Cardinality)
기수성은 다음과 같이 정의된다.
 1:1, 1:M, M:N 관계
 해당엔티티 1건에 대한 상대엔티티의 기수성을 상대 엔티티쪽에 표기
 표기 방법(James Martine 표기법)

나. 선택성(Optionality)
선택성은 다음과 같이 정의된다.
 집합의미 (포함, 불포함)
 1:0 (Optional), 1:1 (Mandatory)
 해당엔티티 1건에 대한 상대엔티티의 기수성을 상대엔티티쪽에 표기
 표기 방법(James Martine 표기법)

다. 관계의 완성 : 기수성과 선택성의 통합 [James Martin]
기수성과 선택성을 통합하면 관계가 완성이 된다.
 해당 엔티티를 기준으로 기수성의 경우의 수와 선택성의 경우의 수를 합하여 최소값과 
  최대값의 경우의 수를 구한 후 해당 엔티티쪽에 최대값을 바깥쪽에 최소값을 표기한다.
 상대 엔티티도 유사한 방법으로 표기한다.

라. 관계의 완성 사례
다음은 '고객'엔티티와 '주문'엔티티에 대하여 관계를 작성하는 절차를 보여주는 사례이다.
 기수성 : 각 고객은 하나 이상의 주문을 할 수도 있고 안 할 수도 있다.
 선택성 : 각 주문은 고객이 하는 것도 있고 그렇지 않을 수도 있다. (사원이 할 수도 있다.)

관계를 완성할 때 흔히 나올 수 있는 경우에 대한 대처 방법을 설명하기로 한다.
첫째, 기수성과 선택성의 통합 시 다:다 관계가 나올 수가 있는데 이는 Table Join이 안되므
        로 (외부 키의 표시가 불능) 교차 엔티티를 이용하여 표기한다. 

둘째, 관계는 두 엔티티간의 업무규칙(Business Rule)을 토대로 인위적인 방법으로 기수성
        과 선택성을 구하여 이를 통합하여 완성된다. 

셋째, 관계(Relationship) 표기의 의미는 두 엔티티 중에서 외부키(Foreign Key)가 놓이는
        자식 엔티티를 구분하기 위한 것이 첫째 임무이다. 외부키는 부모엔티티의 기본키(Pri
        mary Key)가 되기 때문이다. 둘째 임무는 외부키 무결성(관계무결성)을 구하기 위한
        것이다. 

넷째, 기수성 표기, 선택성 표기, 관계통합 표기 방법이 각 교수나 RDBMS 업체에 따라 다를
        수 있는데 큰 문제가 되지 않는다. 왜 관계(Relationship)를 구하는 가의 이유만 알면
        되기 때문이다.

  2.4 엔티티-관계도(Entity Relationship Diagram)의 작성
가. 작도방법
다음은 엔티티-관계도를 효과적으로 작성하는 기법을 설명하기로 한다.
 사각형의 도형 안에 엔티티명을 기록
 업무흐름의 진행순서와 관련된 엔티티는 진행순서를 고려하여 좌에서 우 또는 상에서 하로   중심부에 배열 ("주문"→ "출고")
 중심에 배열된 엔티티와 관계를 가진 연관엔티티(종속엔티티)를 가까운 쪽으로 배열
  ("주문" : "주문품목", "출고" : "출고품목")
 배열된 엔티티와 관계를 갖는 핵심엔티티(Kernal Entity)를 외곽으로 전개
  ("주문", "고객", "영업담당자", "창고", "품목", "제품")
 해당엔티티의 한 건에 대한 상대엔티티의 기수성(Cardinality)을 상대 엔티티쪽에 표기함으
  로써 관계의 기수성을 표기 :
 해당엔티티의 한 건에 대한 상대엔티티의 선택성(Optionality)을 상대 엔티티쪽에 표기함으
  로써 관계의 선택성을 표기 :

나. 주요성공요소
엔티티-관계도를 작성하는데 있어서 주요성공요소는 다음과 같다.
 엔티티를 식별하고, 관계를 도출한 후 ERD작도법에 맞추어 ERD를 작성 
 업무흐름 및 업무규칙의 ERD작도 시 활용

다. 엔티티-관계도와 관련된 실무적인 의미 및 검증기준
다음은 엔티티-관계도의 실무적인 의미와 작성시 유의사항이다.
첫째, 엔티티-관계도는 데이터베이스의 형상(Schema)을 결정하는 매우 중요한 그림이다.
둘째, 엔티티-관계도는 업무흐름을 나타낼 수 있어야 하며, 중요한 데이터속성들이 모두 표현되어 있어야 한다. 따라서 엔티티-관계도는 표현규칙 및 작성규칙에 충실하게 따라서 작성이 되어야 한다.
셋째, 엔티티-관계도를 그리다 보면 선이 겹치는 경우가 많이 발생하는데, 이는 상기한 작도방법을 따르지 않은 것으로 많은 문제를 야기할 수 있다.

다음은 실무적으로 엔티티-관계도를 효과적으로 작성하는 절차이다.
 엔티티의 배열
 관계의 연결 
 기수성 정의 (기수성명 표기) 
 선택성 정의 (선택성명 표기) 
 기수성과 선택성의 통합 : 엔티티-관계도의 완성 
 관계가 다:다일 경우에 교차엔티티를 이용하여 일대다로 분리함

다음은 엔티티-관계도의 검증기준이다.
 작성규칙 및 데이터모델 표현규칙 적합성, 단순성, 확장성, 비중복성, 공유성
 모든 속성의 표현 
 관계표기의 적합성 
 사용자의 데이터요구(화면, 보고서 등)에의 성능 우수성

  2.5 주식별자(Primary Identifier, primary Key, 주키) 정의
다음은 주식별자에 대한 정의절차이다. 이해하기 쉬우므로 간략하게 절차만 설명한다.
 
 각 엔티티별로 하나의 주식별자 선택 
 후보 식별자 중 가장 중요한 하나를 주식별자로, 나머지를 대체키로 지정 
 Subtype엔티티의 주식별자는 Supertype엔티티의 주식별자와 동일하게 선택 
 데이터 이름에 대한 표준약어목록의 이용

  2.6 외부식별자(Foreign Identifier, Foreign Key, 외부키) 정의
가. 외부식별자의 특징
외부식별자는 다음과 같은 특징을 가진다.
 두 엔티티간의 관계를 결정하여 주는 속성으로 관계에 의한 자식엔티티에 위치하며 부모엔
  티티의 주식별자가 같은 값을 갖는다.
 논리적 데이터 모델내의 모든 관계에 관련된 외부키를 규명한다.

나. 외부식별자의 표기 사례
다음 그림은 외부식별자의 표기 예를 보여준다.

  2.7 속성 정의
가. 속성 정의
속성이란 엔티티를 구성하는 더 이상 분리될 수 없는 정보단위로 식별자 종류(기본, 대체, 외부 키)와 비식별자(non-key)로 구분한다.

나. 효과적인 속성 정의방법
다음과 같은 방법으로 속성을 찾아 정의한다.
 정보 분석단계에서 수집된 각종자료 참조
 엔티티, 관계 정의시 파악 
 기존 정보시스템 분석 - 관련 DB나 file의 field 
 속성의 이름을 부여 - 표준화 규칙 사용, 자료사전에 기록

다. 속성 정의 예
다음 표는 제품 엔티티에 대한 속성 정의 예이다. 
엔티티 속성 속성유형 식별자구분 비고
제품 제품코드 설계 PK
  제품명 기초  
  기대수요 기초    
  재주문요구 기초    

  2.8 데이터 모델 검증 및 주요성공요소
가. 데이터 모델 검증 방법
데이터 모델 검증은 아래와 같은 범위의 품질기준에 맞추어 검증한다.
 Group Check 
Business rule에 의한 완전한 이해와 E-R Modeling에 대한 완전한 이해를 가진 숙련된 분석가가 최선의 답이며, Project 팀 내의 동료끼리 상호 모델을 Check하고 오류를 찾아 본다.
 사용자(End User) 확인 
정기적으로 사용자에게 모델을 제시하면서 확인하거나, 사용자를 참여시켜 Error와 누락된 것을 check한다.
 업무규칙(Business Rule)
 엔티티품질 검증
 속성품질 검증
 관계품질 검증
 완전성 검증
사용자 INTERVIEW, 서류양식, 장표, 보고서 등과 비교 점검하여 추가되거나 누락된 것이 없는지를 확인하고, 향후 입력, 출력보고서가 모두 적용될 수 있는지를 점검한다.

나. 주요성공요소
데이터 모델링을 잘하기 위하여 다음과 같은 내용들을 숙지한다. 
첫째,
분석단계의 Data Modeling(산출물: Logical ERD)과 설계단계(산출물: Physical ERD)의 구분
 Business Rule이 같기 때문에 분석단계의 ERD(Entity로 표시)와 설계단계의 
  ERD(Table로 표시)의 근본구조는 달라지지 않는다. 
 분석단계의 ERD에서 약 20%내외만이 수정이 되어 설계단계의 ERD로 바뀐다. 
 설계단계에서는 성능(Performance)을 고려한 Summary, Duplicate, Processin
  g Table이 만들어진다.
둘째,
엔티티-관계도(ERD) 작성 및 검증요령
 현재의 장표, 양식, 업무 매뉴얼, 보고서, 사용자인터뷰 내용 등에서 Entity추출
  기준 (정보관리대상, 유일한 키의 존재, 키 이외의 속성 가질 것) 엔티티(Entity)
  를 추출 하여 적어 놓는다.) 
 엔티티 사이의 Business Rule을 분석하여 그들 사이의 관계를 찾는다. 
관계유형> 
▶ Dynamic flow(업무흐름도에 의존 :주문→생산지시→제품입고 → 출고 →납품)
▶ Static flow(데이터 자체의 관계 : BOM Type, Super-Sub Type)
▶ Transient flow(시간이 가면 변하는 것 : 정산-미정산 분개의 확정 시점)
 향후 입력화면, 출력보고서가 현재의 ERD에서 추측될 수가 있고 계산하기 편한
  가 등의 기준으로 엔티티-관계도를 검증한다.
세째,
엔티티(Entity, Table)를 분해한 후 합칠 수 있다
 엔티티-관계도 작성시 핵심엔티티(독립엔티티, 코드엔티티 : kernel Entity)를
  구별함
 Sub-system만 제작한 다음 나중에 통합할 수 있다. 
네째,
엔티티-관계도를 제대로 못 그리는 이유 : Business Rule을 제대로 분석하지 못했기 때문
 Business Rule에 숨어있는 Data를 분석해내지 못했고 그들 Data사이의 관계를
  분석하지 못했기 때문
 ER 방법론 미 숙지 
 Business Rule해독 90%, ER방법론 숙지 10% 
다섯째,
관계형 데이터베이스 모델링은 속성(Attribute)끼리의 Logical Model이다
 속성(Attribute끼리의 Business Rule → Relationship 
 물리적 의미(Physical meaning) → Relational Key(외부키)의 정의
여섯째,
관계형 데이터베이스는 속성(Attribute)접근 방식이지 Pointer접근방식(COBOL문의 OCCURS, Redefine)이 아님, 즉 같은 TYPE의 속성은 중복되면 안 된다.
일곱째,
엔티티-관계도(ERD)작성시 속성 검출 및 정규화 유의사항
 속성(Attribute)은 가장 최소로 자른다. (예 : 년월일→년, 월, 일) 
 주키(Primary Key)가 나누어지는 것은 분석이 잘못되었기 때문이다 
 1차, 2차, 3차 정규화를 잘 할 것
여덟째,
다대다(Many to Many)관계가 해소되어야 하는 이유와 해소 방법
 속성(Attribute)사이에만 관계(Relationship)가 생성하는데, Many to Many는
  관계를 맞출 수가 없다. 
 비교엔티티 (연결엔티티, 교차엔티티)를 집어넣어준다 
  : 양쪽의 엔티티(Entity)와 속성(Attribute)이 서로 key나 Data부분의 속성
  (Attribute)으로 들어가기만 하면 된다.
아홉째,
Logical Design(Data중심)과 Physical Design(사용하는 DBMS, System 중심)을 완전히 분리할 것
 Summary Table은 Relationship으로 표시가 불가하다. 
(Logical Data Modeling에서는 표시가 안됨)
 Physical개념 : Processing 개념
열째,
엔티티-관계도 (ERD)를 작성시 Top-Down과 Bottom-up을 병행하면서 진행한다. 왜냐하면 Entity의 분할과 Attribute의 상세한 define이 발생하기 때문이다.
열한째,
엔티티-관계도 작성시 선택성(Optionality)을 구분해줄 필요가 있으나 치명적이지 않다.
Posted by 신의물방울
Computer knowledge/Excel2011. 7. 12. 14:53
노란색으로 블럭 씌워진 키와 함께 .....
 
 

단독

Ctrl

Shift

 

 

 

 

 

 

F1

도움말

F3

이름 정의

F1

설명

F2

편집 상태

F4

(창)닫기

F2

메모 편집

F3

이름 붙여넣기

F5

(창)이전 크기로

F3

함수 마법사

F4

마지막 작업 반복

F6

다음 통합문서로 이동

F4

다음 찾기

F5

이동

F7

(창)이동

F5

찾기

F6

다음 창틀로 이동

F8

(창)크기 조절

F6

이전 창틀로 이동

F7

맞춤법 검사

F9

(창)최소화

F8

추가 선택

F8

확장 선택

F10

(창)복원

F9

시트 재계산

F9

모두 계산

F11

 메크로 시트 삽입

F10

바로 가기 메뉴

F10

메뉴 활성화

F12

열기

F11

 시트 삽입

F11

 차트 삽입

 

 

F12

저장

F12

다른 이름으로 저장

A

모두 선택

 

 

 

 

B

굵게

Left Arrow

왼쪽 데이터 선택

=

수식입력

C

복사

Right Arrow

오른쪽 데이터 선택

Insert

삽입모드

D

아래쪽 채우기

Up Arrow

위쪽 데이터 선택

Delete

지우기

F

찾기

Down Arrow

아래쪽 데이터 선택

Home

첫행으로

G

이동

Space Bar

 전체 선택

End

End 모드 켜기/끄기

H

바꾸기

Tab

이전으로 이동

Page Up

한화면위로이동

I

기울임꼴

Enter

입력

Page Down

한화면아래로이동

K

하이퍼링크 삽입

 

 

Left Arrow

왼쪽으로 이동

N

(통합문서)새로 만들기

 

 

Right Arrow

오른쪽으로 이동

O

(통합문서)열기

 

 

Up Arrow

위로 이동

P

인쇄

 

 

Down Arrow

아래로 이동

R

오른쪽 채우기

 

 

Space Bar

공백 문자 입력

S

저장

 

 

Tab

다음으로 이동

U

밑줄

 

 

Enter

입력, 하이퍼링크실행

V

붙여넣기

Shift + Ctrl

 

 

W

(통합문서)닫기

 

 

 

 

X

잘라내기

F3

이름 만들기

 

 

Y

마지막 작업 반복

F6

이전 통합문서로 이동

Alt

Z

실행 취소

F12

인쇄

 

 

9

행 숨기기

 

 

F1

삽입 차트

0

열 숨기기

Left Arrow

왼쪽편데이터모두선택

F2

다른 이름으로 저장

 

 

Right Arrow

오른쪽데이터모두선택

F4

끝내기

Delete

마지막 줄까지 지우기

Up Arrow

위쪽데이터모두선택

F8

매크로 목록

Home

워크시트의 처음으로

Down Arrow

아래쪽데이터모두선택

F11

VB Editor

End

워크시트의 마지막으로

9

 숨기기 취소

 

 

Page Up

이전 워크시트로

0

 숨기기 취소

D

데이터 메뉴

Page Down

다음 워크시트로

 

 

E

편집 메뉴

Left Arrow

왼쪽 끝 데이터로

 

 

F

파일 메뉴

Right Arrow

오른쪽 끝 데이터로

 

 

H

도움말 메뉴

Up Arrow

위쪽 끝 데이터로

 

 

I

삽입 메뉴

Down Arrow

아래쪽 끝 데이터로

 

 

O

서식 메뉴

Space Bar

 전체 선택

 

 

T

도구 메뉴

Tab

다음 창으로

 

 

W

 메뉴

BackSpace

활성셀로 이동

 

 

 

 

Enter

선택한 범위를 현재 항목으로 채우기

 

 

 

 

;

날짜삽입

 

 

 

 

:

시간삽입

 

 

 

 

[팁] 셀에 표시되는 형식을 빠르게 변경할 수 있는 단축키

 

단축키

설명

입력값

단축키 적용 후

<Ctrl>+<Shift>+<!>

통화(천 단위 표시)

74500

74,500

<Ctrl>+<Shift>+<@>

시간

0.6

2:24 PM

<Ctrl>+<Shift>+<#>

날짜

38718

2006-01-01

<Ctrl>+<Shift>+<$>

통화(\ 기호 표시)

74500

\74,500

<Ctrl>+<Shift>+<%>

백분율(%)

0.7

70%

<Ctrl>+<Shift>+<^>

지수

74500

7.45E+04

백분율과 통화단위에 콤마 찍는 단축키 그리고 \표시 단축키등 유용하겠네요.

 

 

 

 

 

아래표도 위와같은 단축키 입니다.

 

 

단독

CTRL

ALT

SHIFT

ALT+SHIFT

CTRL+SHIFT

F1

도움말

리본메뉴 표시,숨기기

현재 데이터 차트 만들기

 

새 워크시트 삽입

 

F2

편집상태

인쇄 미리 보기

 

셀 메모 추가, 편집

   

F3

이름 붙여넣기 대화상자 표시

   

함수 마법사 대화 상자 표시

   

F4

최후의 반복작업

통합 문서 창 닫기

엑셀 닫기

     

F5

이동 대화 상자 표시

통합문서창의 크기 복원

       

F6

 

다음 통합 문서 창으로

       

F7

맞춤법 검사

통합 문서 창 이동 명령 실행

       

F8

확장 모드를 설정,해제

통합 문서 창 크기 명령 실행

매크로 대화 상자 표시

인접하지 않은 셀 또는 셀 범위를 셀 선택 영역에 추가

   

F9

모든 통합 문서의 모든 워크시트 계산

통합 문서 창 최소화

 

현재 워크시트 계산

   

F10

키 설명 표시, 숨김

통합 문서 창이 최대화 되거나, 복원

 

선택한 항목의 바로 가기 메뉴 표시

   

F11

현재 범위의 데이터에 대한 차트 만들기

 

VBA 편집기 열기

새 워크시트 삽입

   

F12

다른 이름으로 저장 대화 상자 표시

         

`

 

셀 값 표시와 수식 표시 간을 전화

     

일반 숫자 서식 적용

1

 

셀 서식 대화 상자 표시

     

1000단위 구분 기호

2

 

굵은 글꼴 서식을 적용,제거

     

시간, 분, AM/PM으로 시간 서식을 적용

3

 

기울임꼴 서식을 적용,제거

     

년, 월, 일로 날짜 서식을 적용

4

 

밑줄을 적용,제거

     

소수 두 자리의 통화 서식 적용,음수는 괄호로 표시

5

 

취소선 서식 적용,제거

     

소수 자릿수 없이 백분율 서식 적용

6

 

개체 숨기기, 개체 표시 간을 전환

     

소수 두 자리의 지수 숫자 서식 적용

7

         

윤곽선 테두리 적용

8

 

윤곽 기호를 표시,숨김

     

현재 셀 주위의 현재 영역을 선택

9

 

선택한 행을 숨김

     

숨겨진 행의 숨김을 모두 취소

0

 

선택한 영역을 숨김

       

-

 

선택한 섹을 삭제하는 대화 상자 표시

     

윤곽선 테두리 제거

=

         

삽입 대화 상자 표시

Backspace

왼쪽의 문자 1자 삭제

         

;

 

현재 날짜 입력

     

현재 시간을 입력

'

 

현재 셀 위의 셀에 있는 수식을 셀이나 수식 입력줄에 복사

     

현재 셀 위의 셀에 있는 값을 셀이나 수식 입력줄에 복사

A

 

전체 워크시트 선택

       

B

 

굵은 글꼴 서식 적용,제거

       

C

 

선택한 셀 복사

       

D

 

아래로 채우기

       

F

 

찾기 및 바꾸기 대화상자 표시

     

셀 서식 대화 상자

G

 

이동 대화 상자

       

H

 

찾기 및 바꾸기 대화상자 표시

       

I

 

기울임꼴 서식 적용,제거

       

K

 

하이퍼링크 삽입 대화 상자

       

L

 

표 만들기 대화 상자

       

N

 

빈 통합 문서 만들기

       

O

 

파일 열기

     

메모가 포함된 모든 셀 선택

P

 

인쇄 탭 표시

       

R

 

오른쪽으로 채우기

       

S

 

저장

       

T

 

표 만들기 대화 상자

       

U

 

밑줄 적용 제거

     

수식 입력줄 확장, 축소

V

 

클립보드 내용 삽입

     

붙여넣기 대화 상자 표시

W

 

통합 문서 창 닫기

       

X

 

선택한 셀 잘라내기

       

Y

 

마지막으로 실행한 명령 반복

       

Z

 

실행 취소

       

화살표키

한 셀씩 이동

현재 데이터 영역의 맨 끝으로 이동

 

셀 선택 영역이 한 셀씩 확장

 

셀 선택 영역이 현재 셀과 동일한 열 또는 행에 있는 비어 있지 않은 마지막 셀까지 확장되거나, 다음 셀이 비어 있는 경우에는 선택 영역이 비어 있지 않은 다음 셀까지 확장됩니다

Delete

셀 내용 제거

         

End

끝 모드 설정

워크시트의 마지막 셀 이동

     

셀 선택 영역이 워크시트의 마지막 셀 까지 확장

Enter

 

셀 범위가 현재 입력 내용으로 채워짐

같은 셀에서 새 줄 시작

셀 입력 완료후 바로 위의 셀 선택

   

ESC

입력 취소

         

Home

행의 시작 부분 이동

워크시트의 시작 부분으로 이동

     

워크시트의 시작 부분까지 확장

PageDown

한 화면 아래로 이동

통합 문서에서 다음 시트로 이동

워크시트에서 한 화면 오른쪽으로 이동

   

통합 문서에서 현재 시트와 다음 시트 선택

PageUp

한 화면 위로

통합 문서에서 이전 시트로 이동

워크시트에서 한 화면 왼쪽으로 이동

   

통합 문서에서 현재 시트와 이전 시트 선택

Spacebar

 

워크시트에서 전체 열 선택

컨트롤 메뉴 표시

워크시트에서 전체 행 선택

 

전체 워크시트 선택

Tab

오른쪽으로 한셀씩 이동

대화 상자에서 다음 순서에 있는 탭으로 전환

 

이전 셀로 이동

 

대화 상자에서 이전 순서에 있는 탭으로 전환

 

Posted by 신의물방울
iPhone2011. 7. 3. 13:14

☆아이폰4 (IPHONE4) 문자음 만들기 적용하기★




벨소리 만드는 법이랑 동일합니다.

(해킹된 아이폰4만 가능합니당!)

우선

제어판-폴더옵션-보기 에서 '알려진 파일 형식의 파일 확장명 숨기기' 표시를 해제합니다.

(그래야 파일 확장자가 보이거든요^^)

이번엔 ACC로 설정되어있는 것을 AIFF로 바꾸는 과정입니당! ACC ☞ AIFF

(ACC는 벨소리 확장자명이구 AIFF는 문자음 확장자명입니다!!)

그러니 문자음을 맹글고 싶다면 설정을 바꿔야 겠지요ㅋ 그럼 당장 해볼까욤!!

아이튠즈 실행.

편집 - 기본설정 갑시다!!

밑에 사진에서 '가져오기 설정' 을 클릭해봅시다!

여기서 ACC인코더를 AIFF인코더로 바꾸고 확인!!

자..설정이 제대로 바꼈나 잠깐 확인해볼까요..

그럼 맹글고자 하는 파일에 오른쪽마우스를 눌러보면 ACC버젼 생성이 AIFF버젼 생성으로 변했을겁니당!

밑에 사진처럼요^^

이제 거의 끝났음!

바꾸고자 하는 파일에다 오른쪽 마우스눌러서 등록정보-옵션 탭에 가서 시작시간, 정지시간을 설정하고 ....(평균 3초정도 줍시당)

나와서 해당 파일에다 오른쪽 마우스를 눌러 AIFF버젼 생성 탭을 선택해주면 자동으로 바로 밑에 파일이 생길꺼임ㅋ

(밑에 사진 처럼)

그럼 그대로 그 파일잡고 드래그 해서 바탕화면으로 옮기주고요~

확장자명만 AIF 에서 CAF로 바꿔주면 문자음 파일 만들기는 끝!!!

자..이제 문자음 적용

아이펀박스나 아이폰익스플로러 실행!

경로는 System - Library - Audio - UISounds 가면 밑에 사진처럼 1부터 6까지 있음!

(아쉽게도 아이폰은 6가지 문자음이 전부라는 사실; 거지같음!!)

파일명만 밑에 사진에 있는 이름처럼 동일하게 해서 아이펀박스에 님들이 만드신 파일을

위에 경로대로 드래그 해주면 자동으로 적용됨!

위에 첨부e된 파일들은 제가 실험으로 만든 2.99초짜리 문자음!

할게 없어서 개인적으로 괜찮은 음악중에 문자음 될만한 부분 몇초정도 따온겁니다^^

2번째는 제가만든 모욕감을 줬어 (오리지날버젼) 버젼이구요..

받으실분만 받아보셈!

(참고로 CAF파일을 미리듣고 싶으면 파일 오른쪽마우스 눌러 연결프로그램을 퀵타임 플레이어로 설정해주면 미리듣기가 가능합니당! )

(본인이 만든 문자음이 적용이 안되고 무음상태라면 ..

귀찮지만, 다시한번 만들어보시고 ...될 수있음 여러개 만들어서 적용시켜 보세요..

간혹 한개씩 적용이 안되는 것 들이 있더라구요^^)

참고로 첨부파일에 있는 sms-received 4 는 롤러코스터 여자성우 버전( 딩동딩동!~이건 닥치고 문자나 확인하라는 소리얘요~)

sms-received 6 은 스카이 여자어린얘 전화왔다고 구라치는 버전 (띠리리리~전화왔다....메쒜진데..소갔징!)

sms-received 1 은 추노 천지호 버전 ( 나! 천지호야~~ 천지~호~~)

감사합니다 _ _ 

Posted by 신의물방울
Programming/HTML2011. 6. 20. 11:28

 소스와 설명

 미리보기

 1. <input> : 평범하게 글자이나 텍스트칸을 넣을 수있는 공간이 생기죠.

 

 2. <input type=""> : 기존의 input에다가 type를 지정하여 type의 옵션을 넣으면, 다양한 모양이 됩니다. 단 입력이나 기타등등의 모양 꼴로 변하죠.

 

 3. <input type="text"> : 이건 <input>과 동일한 것인데, text를 넣을 수있습니다.

 

 3-1 <input type="password">: 이건 1번과 2번과 3번과 동일한데, 비밀번호로 지정되어 글자를 넣든 숫자를 넣든 **** <-이렇게 표시됩니다

 

 4. <input type="checkbox"> : 이건 체크박스로 나타납니다.

 

 5. <input type="checkbox" checked> : 이건 체크박스의 선택된 것으로 나오죠.

 

 6. <input type="checkbox" checked disabled> : 이건 체크되었다가 다시는 선택 못하게 하는거죠

 

 7. <input type="radio"> : 이건 라디오 버튼으로 나타납니다.

 

 8. <input type="radio" checked> : 이건 라디오 버튼의 선택된 것으로 나오죠.

 

 9. <input type="radio" checked disabled> : 이건 선택되었다가 다시는 선택 못하게 하는거죠

 

 10. <input type="hidden"> : 이건 숨김필드입니다. 값을 넘겨받을때 숨김속성으로 몰래 감쳐지죠. 대부분 form태그의 중요한 속성을 사용할 때 하더군요.

 

 11. <input type="image" src="이미지 경로및 주소"> 이건 이미지의 경로를 넣어 일반<img>태그 처럼 할 수 있습니다. 단 버튼이 이미지의 경로로 바뀌고,form 태그의 submit태그와 함께 포함되어 있습니다.

 

 12. <input type="reset"> : 이건 초기화 하는 버튼(영어로 submit 또는 초기화라고 나옴)

 

 13. <input type="reset" value="초기화"> : value값에 초기화라고하면 초기화라고 만들어줌

 

 14. <input type="submit"> : 이건 전송버튼

 

 15. <input type="submit" value="전송함"> : 전송버튼인데다가 버튼이름을 전송함 이라고 할 수있음.

 

 16. <input type="file"> : 파일을 첨부 할때 사용하며, CSS와 곁들어서 사용 가능

 

 17. <input type="text" value="텍스트"> : 이렇게 사용하면 텍스트 칸에 텍스트 라고 글자가 이미 나와버림

 

 18. <input type="text" value="텍스트 사이즈 지정" size="20"> : 텍스트 사이즈를 20만큼 지정

 

 19. <input type="text" value="" name="text"> : php이나, 자바스크립트를 사용할때 변수를 넘거나 받을때 text라는 값을 받도록 name의 갑을 text라 지정하고 이 버튼의 태그 이름을 text라고 지정함

 

 20. <input type="text" value="" name="text" style="border-color:red;"> : 이건 CSS인데 여러모로 사용 할수있음. 굳이 설명을 하지 않겠음 CSS에서 color;red 라고 지정해주면, 텍스트칸의 글자색을 빨간색으로 지정해줌

 

 21. 버튼에 CSS를 첨가하여 이쁘게 꾸밀 수있다.
<input name="button" style="background-color:yellow;border-color:red;font-face:굴림;font-size:9pt;">

 

disabled의 속성과 maxlength="15"의 속성
disabled속성은 input의 선택을 못하게 막아준다

<input type="text" value="" disabled>
<input type="text" value="ㅋㅋㅋ 금지욧" disabled>
<input type="radio" value="" checked disabled>
<input type="checkbox" value="" checked disabled>

그리고 maxlength 속성은 최대 글자 입력넣을 수있는 제한수입니다.

<input type="text" value="" maxlength="20"> <--이렇게 하면 글자 입력수를 20자리만 입력가능


 글자제한과 폰트사이즈 지정 font-size:7pt;  
 인푸트폼의 넓이와 높이를 지정 width:150pt; height:12pt;  
 글자제한과 폰트사이즈와 백그라운드이미지 지정 background-image:url('test.gif');  

출처 : Tong - 쭈꿈님의 쭈꿈님의 기본통통

Posted by 신의물방울
Programming/JAVA2011. 6. 19. 13:40

POJO (Plain Old java Object) 를 해석하면 평범 자바 오브젝트라고 한다.
POJO를 이해 하기 전 POJO라는 단어가 만들어진 역사적 배경을 살펴볼 필요가 잇다. POJO는 마틴 파울러가 2000년 가을에 열렸던 어느 컨퍼런스의 발표를 준비하면서 처음 만들어낸 말이다. 마틴 파울러는 EJB(Enterprise JavaBean)보다는 단순한 자바 오브젝트에 도메인 로직을 넣어 사용하는 것이 여러가지 장점이 있는데도 왜 사람들이 그 EJB가 아닌 '평범한자바 오브젝트'를 사용하기를 꺼려 하는지에 대해 의문을 가졌다. 그리고 그는 단순한 오브젝트에는 EJB와 같은 그럴듯한 이름이 없어어서 그 사용을 주저하는 것이라고 결론 내렸다.
그래서 만든 단어가 POJO라는 용어인 것이다. POJO기반의 기술을 사용한다고 말하면 왠지 첨단 기술을 사용하는 앞선 개발자인 듯한 인상을 주기 때문인다.

POJO기반의 프로그래밍 기술이 EJB의 강력한 대안으로 등장했고 ,POJO 기반 프레임워크 ,POJO 애플리케이션을 위한 플랫폼 등이 점점 인기를 끌게 되었고, 결국 POJO가 배제하려고 했던 EJB는 POJO기반의 기술에 밀려 이제 레거시 기술로 사라질 위기에 처했다. 그렇다면 단지 EJB를 사용하지 않으면 모두 POJO라고 할 수 있을까? 그렇지 않다. POJO프로그래밍이라는 개념은 단지 "EJB가 아닌 자바"이상의 특징을 가지고 있는 프로그래밍 모델이다. POJO기반의 개발은 생각보다 단순하지 않다.
POJO를 좀더 이해하려면 EJB의 장단점을 함께 이해해야 한다. 그것은 POJO 프로그래밍이 다시 EJB시대이전으로 돌아 가자는 것이 아니고 ,EJB를 넘어 그보다 더 앞으로 나아가자는 것이기 때문이다.
EJB를 사용하지 말고 POJO를 쓰자는 것은 EJB이전의 방식으로 돌아 가는 것을 의미한다면 또 다른 문제가 발생 할 수 밖에 없다. 여전히 복잡한 로우레벨의 API를 이용해 코드를 작성해야 하고, 많은 기술적인 문제를 애플리케이션 코드에 그대로 노출시켜 개발해야 한다면 기껏 POJO로의 복귀 덕분에 얻는 많은 장점들을 놓칠 수 밖에 없다.

그래서 등장한 것이 POJO 기반의 프레임워크이다. POJO프레임워크는 POJO를 이용한 애플리케이션 개발이 가진 특징과 장점을 그대로 살리면서 EJB에서 제공하는 엔터프라이즈 서비스와 기술을 그대로 사용할 수 있도록 도와주느 프레임워크이다. 나아가 이는 기존의 EJB에서보다 훨씬 더 세련되고 나은 방법이다. 데표적인 프레임웤 스프링 하이버네이트~!

참고로 스프링은 엔터프라이즈 서비스들을 POJO기반으로 만든 비지니스 오브젝트에서 사용할 수 있게 한다. 대표적인 선언적인 트랜잭션 서비스와 보안이다. 또한 EJB와 마찬가지로 오브젝트 컨테이너를 제공해서 인스턴스의 라이프사이클을 과리하고 필요에 따르 스레딩, 풀링 및 서비스 인젝션 등의 기능을 제공한다. 또한 OOP를 더 OOP답게 사용 할 수있게 하는 AOP기술을 적용해서 POJO개발을 더 쉽게 만든다.

POJO프로그램의 진정한 가치는 자바의 객체지향적인 특징을 살려 비지니스 로직에 충실한 개발이 가능 하도록 하는것이기도 하다.

내생각을 적자면
평범한 자바 객체로 프로그래밍 하기라고 부르며, 침략적인 코드를 적지 않은 것이다.
쉽게 말해 implement 와 extends를 사용 하지 않으며
콤포지션과 인터페이스타입으로 프로그래밍 하는것(이건 레디 존슨)

특정 클래스의 concrete class가 되면 안되고, 구현 체도 되면 안된다.
Posted by 신의물방울
Programming/JAVA2011. 6. 19. 12:32

# 1. Beans(강남콩)의 이해
- JSP Page 상에 나열되는 자바 처리 로직은 디자인 코드와 함께 매우 복잡한 코드를 구성합니다.
이로 인해 디자인 변경시 자바코드가 영향을 받아 오류가 자주 발생되며, 코드 수정시 코드를 알아볼 수
없어 유지보수가 매우 힘이 듭니다.
이러한 반복되는 자바 코드들을 JAVA 파일안에 저장하여 사용하는 형태를 빈즈라고 합니다.
- 확장자는 *.java입니다. 컴파일하여 .class 형태로 배포합니다.
- 메모리에 생성된 Beans(DTO)는 다른 자바 클래스(DAO, Business Logic)에 의하여 사용됩니다.
- Beans는 dll과 같은 원리를 가지고 있습니다.
- Beans는 sun에서 제시한 작성 규칙이 존재합니다.

# 2. DTO(Data Transfer Object : 데이터 전송 객체, value Object) Beans
- 폼에서 입력된 데이터들은 하나의 DTO 객체로 변환 될 수 있습니다.
- 하나의 데이터베이스 레코드를 저장하며 레코드와 같은 구조를 가지고 있습니다.
- 하나의 레코드는 Beans 클래스 객체 하나로 매핑됩니다.

1) 필드 선언 (멤버 변수, 인스턴트 변수)
- 하나의 컬럼 값을 저장
- 보안성 및 캡슐화, 데이터 은닉의 목적으로 private를 선언합니다.
ex) private String name;

2) setter
- 필드에 값을 저장하는 기능을 합니다.
- HTML 폼의 INPUT 태그의 값을 빈에 저장하는 역할을 합니다.
- 메소드 명은 set + input 태그의 이름 중 첫자를 반드시 대문자로 사용하는 규칙을 적용해 태그명을 지정
합니다. 따랏 HTML에서 input 태그의 이름은 영문 소문자로 사용하여 태그의 이름에 신중을 기해야
합니다,

예1)
<input type="text" name="id" size="15" value='user1'>
<input type="text" name="addr" size="15" value='user1'>

public void setId(String id) {
this.id = id;
}

public void setAddr(String addr) {
this.addr = addr;
}

3) getter
- 인스턴스 변수의 값을 가져오는 기능을 합니다.

예1) public String getName() {
return name;
}

# 3. DAO(Data Access Object : 데이터 접근 객체t) Beans
- DTO 객체를 만들어 편집 및 조작을 합니다.
- DTO를 데이터베이스 서버에 저장하기도 하고, 데이터 베이스 서버로부터 레코드를 Select해 DTO 객체로
변경해 가져오기도 합니다.
- Insert, delete, upadate, select 등 데이터 처리를 주 목적으로 ㅎ바니다.

# 4. Manager Class(관리 클래스, MGR)
- DTO와 DAO 사이에서 연결 및 처리 역할을 합니다.
DreamWeaver Eclipse DbEdit
(*.html, *.jsp) (*.java) (*.sql)
----------- ------------------------ -------------
JSP <-----> Manager Class <-----> DAO <-----> Oracle
↑ ↑
│ │
└--------------------------------┘
DTO
계층간 데이터 전송 객체

# 5. Beans의 사용 Scope(범위)
- page : 기본값, page를 벗어나면 자동으로 소멸합니다.(중요)

- request : forward, include에서 사용 가능, 약간 사용됩니다..

- Session : 사용자가 로그인해 있는 동안 계속적으로 살아 있습니다.
메모리 소모가 심함으로 필요한 곳에 적절히 사용해야 됩니다.
쇼핑카드 구현등 객체를 지속적으로 유지해야하는 경우에 사용됩니다.
사용자가 브라우저를 닫으면 고나련 JSP session Bean은 소멸됩니다.(중요)

- Application : 웹 사이트 전체, 모든 사용자에게 영향을 미치는 빈
메모리 소모가 심함으로 많이 사용하지 않고, 서버가 운영되는 동안 객체가 살아있습니다.
모든 사용자가 변수와 객체를 공유하게 됩니다.
서버를 재 시작해야 변수들이 재 설정됩니다.

Posted by 신의물방울