* 관계 : 엔터티의 인스턴스 사이 의 논리적인 연관성으로서 존재의 형태로서나 행위로서 서로에게 연관성이 부여된 상태

 

* 관계의 패어링

-관계는 엔터티 안에 인스턴스가 개별적으로 관계를 가지는 것(패어링)이고 이것의 집합을 관계로 표현

-따라서 개별 인스턴스 가 각각 다른 종류의 관계를 가지고 있다면 두 엔터티 사이에 두 개 이상의 관계가 형성될 수 있다

 

*관계 (ERD는 구분하지 않는다, UML은 연관관계-의존관계로 구분한다)

  • 존재에 의한 관계
  • 행위에 의한 관계

 

*관계 표기법

1. 관계명

2. 관계차수 -> 1:1 , 1:M , M:N

3. 관계선택사양 -> 필수 / 선택

 

*관계의 체크사항

1. 두 엔터티 연관규칙 존재?

2. 정보의 조합 발생?

3. 업무기술서, 장표에 관계 서술 동사 존재?

4. 업무기술서, 장표에 관계연결 규칙 존재?

 

*식별자 : 하나의 엔터티에 구성되어 있는 여러 개의 속성 중에 엔터티를 대표할 수 있는 속성을 의미하며 하나의 엔터티는 반드 시 하나의 유일한 식별자가 존재해야 한다.

 

*식별자 특징

  1. 엔터티 내 대표성
    1. O : 주식별자 : 유일성, 최소성, 불변성, 존재성 -> 참조관계 설정 가능 ( 이름등은 주식별자 부적절)
    2. X : 보조식별자 : 대표성이 없다, 연결 불가
  2. 스스로 생성
    1.  O : 내부식별자 :  
    2.  X : 외부식별자 : 타 엔터티에서 받아옴
  3. 단일 속성
    1. O : 단일식별자 :
    2. X : 외부식별자 : 둘 이상의 속성을 갖는다
  4. 대체 여부
    1. O : 본질식별자 : 업무에 의해 생성
    2. X : 인조식별자 :

 

* 주식별자 도출기준 :

1. 해당 업무에서 자주 이용되는 속성을 주식별자로 지정하도록 함

2. 명칭, 내역 등과 같이 이름으로 기술되는 것은 피함

3. 속성의 수가 많아지지 않도록 함

 

 

 

'SQLD' 카테고리의 다른 글

SQLD (2) 엔터티  (0) 2022.11.04
SQLD (1)모델링  (0) 2022.11.04
SQLD () JOIN  (0) 2022.06.28
SQLD (4) 성능데이터모델링 , 정규화  (0) 2021.10.05

* 엔터티 :

-업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것(Thing)

-업무 활동상 지속적인 관심을 가 지고 있어야 하는 대상으로서 그 대상들 간에 동질성을 지닌 인스턴스들이나 그들이 행하는 행위의 집합

- 엔터티는 그 집합에 속하는 개체들의 특성을 설명할 수 있는 속성(Attribute)을 갖는다

- 엔터티는 인스턴스의 집합이라고 말할 수 있고, 반대로 인스턴스라는 것은 엔터티의 하나의 값에 해당한다고 정의할 수 있다

 

 

* 엔터티의 특징

1. 반드시 해당 업무에 필요

2. 유일한 식별자 존재

3. 영속적으로 존재하는 두개 이상 인스턴스의 집합

4. 업무프로세스에 이용됨

5. 반드시 속성 존재(두 개 이상)

6. 다른 엔터티와 최소 한 개 이상의 관계

 

*엔터티의 분류

  • 유무형에 따라
    • 유형엔터티 : 물리적 존재 ex) 직원
    • 개념엔터티 : 개념적 정보로 존재 ex) 조직
    • 사건엔터티 : 업무 수행으로 발생 ex) 주문 내역
  • 발생 시점에 따라
    • 기본엔터티 : 독립적, 부모가 됨
    • 중심엔터티 : 그 업무의 중심 역할
    • 행위엔터티 : 두 개 이상의 부모로부터

*엔터티 명명 규칙

1. 현업 사용 용어

2. 약어를 쓰지 않는다

3. 단수

4. 유일한

5. 의미대로

 

*속성

-> 업무에서 필요로하는 인스턴스에서 관리하는 의미상 더 이상 분리되지 않는 최소 데이터 단위

-> 한개의 속성은 한개의 속성값을 갖는다

-> 엔터티를 설명하고 인스턴스의 구성요소가 된다

 

*속성의 특징

- 반드시 해당 업무에서 필요하고 관리하고자 하는 정보

- 정해진 주식별자에 함수적 종속성을 가져야 한다

- 하나의 속성에는 한 개의 값만을 가진다

 

*속성의 분류

  • 특성에 따라 분류
    • 기본 속성 : 업무에서 추출
    • 설계 속성 : 모델링을 위해 , 업무를 규칙화하기 위해 생성 
    • 파생 속성 : 계산된 값
  • 구성 방식에 따라
    • PK
    • FK
    • 일반

* 엔터티, 인스턴스, 속성, 속성값의 관계

- 엔터티에는 두 개 이상의 인스턴스가 존재

- 각각의 엔터티에는 고유의 성격을 표현하는 속성정보를 두 개 이상 갖는다

- 하나의 속성은 하나의 인스턴스에만 존재할 수 있다

- 속성은 관계로 기술될 수 없고 자신이 속성을 가질 수도 없다

- 엔터티 내에 있는 하나의 인스턴스는 각각의 속성들의 대해 한 개의 속성값만을 가질 수 있다

 

* 도메인

-각 속성은 가질 수 있는 값의 범위가 있는데 이를 그 속성의 도메인(Domain)이라 한다

 

* 속성의 명명

-현업에서 사용하는 이름을 부여

 

'SQLD' 카테고리의 다른 글

SQLD (3)관계, 식별자  (0) 2022.11.04
SQLD (1)모델링  (0) 2022.11.04
SQLD () JOIN  (0) 2022.06.28
SQLD (4) 성능데이터모델링 , 정규화  (0) 2021.10.05

* 모델링?

1. 정보시스템 구축, 분석

2. 단지 시스템 구현을 의미하지 않고 , 모델링 자체로 업무를 설명하고 분석

(복잡한 현실-> 표기법 등으로 단순화, 업무를 설명)

3. 모델링의 특징 : 추상화, 단순화, 명학화

 * 추상화 : 현실세계를 일정한 형식에 맞추어 표현

 * 단순화 : 복잡한 현실세계를 약속된 규약에 의해 제한된 표기법이나 언어로 표현

 * 명확화 : 대상에 대한 애매모호함을 제거하고 정확하게 현상을 기술

 

--> 현실세계를 추상화, 단순화, 명확화하기 위해 일정한 표기법에 의해 표현하는 기법

 

* 모델링의 세 가지 관점?

1. 데이터관점

 - 업무가 어떤 데이터와 관련이 있는지 또는 데이터간의 관계는 무엇인지에 대해서 모델링

2. 프로세스관점

 - 업무가 실제하고 있는 일은 무엇인지 또는 무엇을 해야 하는지를 모델링

3. 데이터와 프로세스의 상관관점

 - 업무가 처리하는 일의 방법에 따 라 데이터는 어떻게 영향을 받고 있는지 모델링

 

* 데이터 모델링의 중요성

1. 파급효과

2. 복잡한 정보 요구사항의 간결한 표현

3. 데이터 품질

 

* 데이터 모델링 주의점

1.  중복 최소화

2.  비유연성 

3.  비일관성

 

*모델링의 3단계 (추상화 수준에 따라)

1. 개념적 모델링 : 높은 추상화 , 업무중심

2. 논리적 모델링 : 구체화

3. 물리적 모델링 : 테이블 스페이스 고려

 

* ANSI/SPARK의 3단계 구조

(스키마)

1. 외부 : 여러 사용자 관점 - 모든 개개인의 관점

2. 개념 : 모든 사용자 통합 관점 <- (데이터 모델링)

3. 내부 : DB 물리적 저장 형식

 

* 데이터 모델링의 세 가지 요소

1) 업무가 관여하는 어떤 것(Things)

2) 어떤 것이 가지는 성격(Attributes)

3) 업무가 관여하는 어떤 것 간의 관계(Relationships)

 

* ERD 작성 순서

1. 그리기 2. 배치 3. 관계 설정 4. 관계명칭 기술

5. 관계의 참여도 6. 관계의 필수 여부

 

* 좋은 데이터 모델의 요소

1. 완전성 - 업무에서 필요로 하는 모든 데이터가 데이터 모델에 정의되어 있어야 한다

2. 중복배제 - 하나의 데이터베이스 내에 동일한 사실은 반드시 한 번만 기록

3. 업무규칙 - 수많은 업무규칙(Business Rules)을 데이터 모델에 표현하고 이를 해당 데이터 모델을 활용하는 모든 사용자가 공유할 수 있도록 제공하는 것

4. 데이터 재사용 - 데이터가 애플리케이션에 대해 독립적으로 설계되어야만 데이터 재사용성을 향상시킬 수 있다

5. 의사소통 -  데이터 모델이 진정한 의 사소통(Communication)의 도구로서의 역할을 하게 된다

6. 통합성 - 동일한 성격의 데이터를 한 번만 정의하기 위해서는 공유 데이터에 대한 구조를 여러 업무 영역에서 공동으로 사용하기 용이하게 정의할 수 있어야 한다

 

 

'SQLD' 카테고리의 다른 글

SQLD (3)관계, 식별자  (0) 2022.11.04
SQLD (2) 엔터티  (0) 2022.11.04
SQLD () JOIN  (0) 2022.06.28
SQLD (4) 성능데이터모델링 , 정규화  (0) 2021.10.05

1.엔티티에는 가급적 Setter를 사용하지 말자

-- 변경포인트가 많아져 유지보수가 어려울 수 있다

 

2.모든 연관관계는 지연로딩( LAZY )으로 설정

--JPQL을 실행할 때 N+1 문제가 자주 발생한다.

OneToOne, ManyToOne 관계는 기본이 즉시로딩이므로 직접 지연로딩으로 설정해야 한다

 

3.컬렉션은 필드에서 초기화 하자

--null에서 안전하도록

 

'개발자로 업그레이드 되자 > JPA' 카테고리의 다른 글

영속성  (0) 2022.09.06
JPA 기초 개념  (0) 2022.01.25

엔티티의 생명주기:

1) 비영속 : 관계없음

2) 영속 : 저장된 상태

- 영속성 컨텍스트가 관리하는 엔티티 , 식별자값이 반드시 있어야 한다

- 1차 캐시, 동일성 보장 , 트랜잭션으로 쓰기 지연, 변경 감지, 지연 로딩 등이 가능해진다.

3) 준영속 : 저장되었다가 분리된 상태

- em.detach() , em.close() , em.clear()

4) 삭제 : 삭제된 상태

- em.remove()

 

 

 

 

 

 

'개발자로 업그레이드 되자 > JPA' 카테고리의 다른 글

엔티티 설계시 주의점  (0) 2022.09.27
JPA 기초 개념  (0) 2022.01.25

프로미스 : 비동기 처리를 추상화한 객체 -> 비동기 처리 후 다음 처리를 실행하기 위한 용도

 

순서 보장을 위해 쓰던 콜백 지옥을 대체

 

다음 동작을 위해 아래의 상태로 존재

1. Fulfilled : 성공

2. Rejected : 실패 - 에러

3. Pending : 진행중

 

var promise = new Promise(function(resolve, reject){ ... });

resolve : fulfilled 상태가 될 때 실행

reject : rejected 상태가 될 때 실행

-- 두 함수 모두 프로미스를 종료시키며 인자값을 전달할 수 있다

var promise = new Promise(function(resolve,reject){
	setTimeout(function(){
		console.log("Hello");
        resolve("World");
    },1000 );
});

promise.then(function(response){
	console.log(response);
})
var promise = new Promise(function(resolve,reject) {
	setTimeout(function(){
    	console.log("Hello");
        reject("World");
    },1000);
});

promise.then(function(response){
		console.log("Success!");
    }).catch(function(error){
    	console.log(error);
	}).finally(()=> {
    	console.log("finally!");
    });

 

 

 

EQUI(등가) JOIN : 두 개의 테이블 간에 컬럼 값들이 정확하게 일치하는 경우로 대부분 PK<->FK 기반

 조건은 WHERE 절에 기술한다

 

Non EQUI(비등가) JOIN : 두 개의 테이블 간에 컬럼 값들이 정확하게 일치하지 않는 경우. = 이 아닌 BETWEEN, >, < 등으로 비교한다. 

 

조인 기법 - NL JOIN, HASH JOIN , MERGE JOIN

 

[ NL JOIN : 중첩된 반복문과 유사한 방식으로 조인을 수행 ]

 1. 선행 테이블에서 주어진 조건을 만족하는 행을 찾음

 2. 선행 테이블의 조인 키 값을 가지고 후행 테이블에서 조인 수행

 3. 선행 테이블의 조건을 만족하는 모든 행에 대해 1번 작업 반복 수행

 

[ SORT MERGE JOIN : 조인 칼럼을 기준으로 데이터를 정렬하여 조인을 수행 ]

  * NL JOIN은 주로 랜덤 액세스 방식으로 데이터를 읽는 반면 스캔 방식으로 데이터를 읽음

 * 대량의 조인 작업에서는 HASH JOIN이 성능상 유리

 * 인덱스가 존재하지 않을 경우에도 사용할 수 있는 조인 기법

 1. 선행 테이블에서 주어진 조건을 만족하는 행을 찾음

 2. 선행 테이블의 조인 키를 기준으로 정렬 작업을 수행

 3. 후행 테이블에서 주어진 조건을 만족하는 행을 찾음

 4. 후행 테이블의 조인 키를 기준으로 정렬 작업을 수행

 5. 정렬된 결과를 이용하여 조인을 수행하며 조인에 성공하면 추출버퍼에 넣음

[ HASH JOIN : 해싱 기법을 이용하여 조인을 수행  ]

 1. 선행 테이블에서 주어진 조건을 만족하는 행을 찾음

 2. 선행 테이블의 조인 키를 기준으로 해쉬 함수를 적용하여 해쉬 테이블을 생성

+ 조인 칼럼과 SELECT 절에서 필요로 하는 칼럼도 함께 저장됨

 3. 후행 테이블에서 주어진 조건을 만족하는 행을 찾음

 4. 후행 테이블의 조인 키를 기준으로 해쉬 함수를 적용하여 해당 버킷을 찾음

+ 조인 키를 이용해서 실제 조인될 데이터를 찾음

 5. 조인에 성공하면 추출버퍼에 넣음

 

'SQLD' 카테고리의 다른 글

SQLD (3)관계, 식별자  (0) 2022.11.04
SQLD (2) 엔터티  (0) 2022.11.04
SQLD (1)모델링  (0) 2022.11.04
SQLD (4) 성능데이터모델링 , 정규화  (0) 2021.10.05

GridView로 DataCollection을 바인딩해 편리하게 데이터를 표현가능

 

행과 열 / 헤더 바디 풋터 설정 후 활용

-------------------------------------------------------------------------------

정렬 : gridView의 헤더 클릭시 정렬 지원

-> property에서 sortable 옵션을 정의하여 사용

 

필터 : 대상건의 값을 사용자가 조건을 정의하여 필터 처리 가능

-> property에서 useFilterList 옵션을 정의하여 사용

 

컬럼이동 : gridView 헤더를 마우스로 drag하여 컬럼을 이동할 수 있는 기능

-> property에서 columnMove 옵션을 정의하여 사용

 

이외 API를 활용한 엑셀 다운 / 컬럼 동적 변경 설정 등등 가능

-------------------------------------------------------------------------------

 

table 활용

 

기본으로 table을 만들고 1td에 제목을 쓰고 2td에 inputbox, selectbox 등을 삽입하고 css를 주었다

 

table property ->

adaptive : layout

adaptiveThreshod : 700 을 주어 반응형 효과를 줄 수 있다.

 

 

 

'개발자로 업그레이드 되자 > WebSquare' 카테고리의 다른 글

WebSquare (2) 요소 및 Property  (0) 2022.04.02
WebSquare (1) 기본세팅  (0) 2022.04.02

Palette를 통해 요소들을 드래그&드롭 할 수 있고

 

이 요소들에 각각 Property를 줘서 여러가지 CSS, JS와 비슷한 효과를 줄 수 있다.

 

[ InputBox ] Property

---------------------------------------------------------------------------

1. placeholder - 기존의 placeholder와 비슷한 효과를 준다

 

2. initValue - 박스에 기본값을 부여한다.

 

3. displayFormat - 박스의 값에 형식을 부여한다.

예시)dateType이 number일 경우 #,###.#0 으로 적용하면 3자리수 마다 ,가 찍히며 소수점 2자리까지 표현된다.

※ 이 기능은 박스에 focus가 없는 경우에만 적용되며 박스 클릭 시 포맷이 다시 돌아온다.

focus에 관계없이 적용하려면 : applyFormat 속성값을 all 로 준다.

 

4. id , class - id 과 class 를 부여한다.

id를 등록하면 해당 요소가 스크립트에서 전역변수로 선언된다.

( doucment.getElementById 와 같은 효과 )

예시) id.setValue( 값 ) = 값이 부여되는 스크립트

※ initValue 와 setValue를 같이 쓰면 setValue 값이 최종으로 적용된다.

---------------------------------------------------------------------------

[ Spinner ] => 버튼을 이용해 필드 값 증감 표현

---------------------------------------------------------------------------

[ Secret ] => input type = "password"와 유사한 인터페이스

---------------------------------------------------------------------------

[ SearchBox ] => InputBox와 유사하지만 x아이콘이 제공되 클릭 시 입력값 지움

---------------------------------------------------------------------------

[ InputCalendar ] => Calendar 컴포넌트 + Input 컴포넌트 복합

---------------------------------------------------------------------------

[ TextBox ] => 긴 문장에 사용

---------------------------------------------------------------------------

[ Span ] =>짧은 글자나 변경되는 값에 사용

---------------------------------------------------------------------------

[ Image] =>이미지 표현

---------------------------------------------------------------------------

[ Checkbox] =>체크박스

---------------------------------------------------------------------------

[ MultiSelect ] => Ctrl 키로 여러 항목 선택 가능

---------------------------------------------------------------------------

[ SelectBox] => select tag 기능

---------------------------------------------------------------------------

 

'개발자로 업그레이드 되자 > WebSquare' 카테고리의 다른 글

WebSquare (3) GridView & table  (0) 2022.04.03
WebSquare (1) 기본세팅  (0) 2022.04.02

새로 취직한 곳 WMS 프로젝트에서 WebSquare를 사용한다고 한다

 

기존에 html css js만 사용하다 쓰려니 오히려 낯설고 불편해서 더 공부가 필요할 것 같다.

 

인스웨이브의 강의를 보며 개념을 정리해 본다.

 

기본적으로 이클립스에서 인스웨이브 엔진을 돌려 xml -> html , js로 변환되어 화면이 완성되는 것 같다.

 

학습용 프로젝트

경로에서 WebContent에 xml을 만들어 화면을 만들 수 있다.

라이브러리들을 넣어놓고 web.xml에 servlet으로 엔진 설치를 할 수 있다고 한다.

 

손가락 모양을 눌러 Run에 동작될 브라우저를 설정하고 디폴트도 설정할 수 있다.

 

'개발자로 업그레이드 되자 > WebSquare' 카테고리의 다른 글

WebSquare (3) GridView & table  (0) 2022.04.03
WebSquare (2) 요소 및 Property  (0) 2022.04.02

MySQL도 오라클과 비슷하게

create table 로 생성한다

 

다만 PK의 값을 오라클의 경우 시퀀스라는 별도의 스키마 개채를 사용하지만

MySQL의 경우 기본 키 열에 대한 자동 증가 기능만 켜면 된다

create 시 지정할 수 있다 (auto_increment)

또는 alter 로 수정할 수 있다

 

또한 데이터 삽입시 null 값을 제공하기만 하면 MySQL은 사용 가능한 다음 숫자료 열을 채운다

 

 

 

'개발자로 업그레이드 되자 > MySQL' 카테고리의 다른 글

자료형  (0) 2022.03.07
명령줄 도구  (0) 2022.03.07

문자데이터 : char / varchar (오라클에서는 varchar2 사용)

MySQL 8버전은 utf8mb4 케릭터셋이 자동 선택

 

선언시 캐릭터셋 설정 가능

create database european_sales cheacter set latin1;

 

텍스트데이터: tinytext / text / mediumtext / longtext

varchar열에 64KB 제한을 초과하는 데이터를 저장하려면 사용

최대 바이트 크기에 따라 선택

정렬 또는 그룹화에 text 열을 사용할 경우 한도를 늘릴 수는 있지만 처음에는 1024 바이트만 사용됨

(text를 제외한 텍스트 자료형은 MySQL의 고유 자료형이다)

오라클의 char열의 경우 최대 2000바이트 varchar2의 경우 최대 4000바이트 더크면 CLOB 사용

SQL의 경우 char와 varchar 모두 최대 8000 , varchar(max) 정의 열에는 최대 2GB데이터 저장

 

숫자데이터: tinyint / smallint / mediumint / int / bigint / float/ double

시간데이터 : date / datetime / timestamp / year / time

 

ENUM(A , B  , C .. ) 

enum 자료형

 

 

 

 

 

'개발자로 업그레이드 되자 > MySQL' 카테고리의 다른 글

자동증가  (0) 2022.03.07
명령줄 도구  (0) 2022.03.07

+ Recent posts