Mwoon
아하홍홍 / 2018. 1. 3. 10:12 / DATABASE

관계


 개념 두 개의 엔티티타입 사이의 논리적인 관계 엔티티와 엔티티가 존재의 형태나 행위로서 서로에게 영향을 주는 것을 말한다.


관계 페어링


각각의 엔티티들은 자신이 관련된 엔티티들과 관계의 어커런스로 참여하는 형태를 관계 페어링이라 한다.


엔티티 타입 : 엔티티의 집하을 논리적으로 표현

관계 : 관계 페어링의 집합을 논리적으로 표현


관계의 명명


관계에는 두 개의 멤버십이 있다.

멤버십에 의해 두 가지 관점으로 표현

멤버십은 엔티티타입이 관계에 참여하는 것


관계이름의 명명 규칙


애매한 동사를 피하라

ex) 관계된다.관련이 있다. 이다 한다 등은 구체적이지 못하므로 어떤 행위가 있는지 두 참여자간 어떤 상태가 존재하는지 파악 할 수 없다.


현재형으로 표현 하라.


ex)수강을 신청 했/다. 강의를 할 것이다. 이런식으로는 표현해서는 안된다. 수강을 신청한다. 강의를 한다로 표현해야한다.


관계의 카디낼리티


두 개의 엔티티타입간 관계에서 참여자의 수를 표현하는 것을 카디낼리티라고한다.



1:1 관계


1:M 관계


m:n 관계



관계의 종류


정상 관계

엔티티타입과 엔티티타입이 독립적으로 분리되어 있으면서 상호간에 한 가지 관계만 성립하는 형태


자기 참조 관계

하나의 엔티티타입 내에서 엔티티와 엔티티가 관계를 맺고 있는 형태다. 계층 구조 형태를 표현할 때 유용하다.


병렬 관계

엔티티타입과 엔티티타입이 독립적으로 분리되어 잇으면서 두 개 이상의 관계가 상호간에 존재하는 형태의 관계


슈퍼타입 서브타입 관계

공통 속성을 가지는 슈퍼타입과 공통 부분을 제외하고 두 개 이상의 엔티티타입간의 속성에 차이가 있을 때 별도의 서브 타입으로 존재할 수 있다. 슈퍼타입과 서브타입의 관계 형식은 1:1 이다.


주식별자/비식별자 관계

부모 엔티티타입의 주식별자가 자식 엔티티타입의 주식별자로 상속되는 주식별자 관계와 부모 엔티티타입의 주식별자가 지식 엔티티타입의 일반속성으로 상속되는 비식별자 관계로 구분




엔티티 슈퍼타입과 서브타입


개념 여러 개의 엔티티타입이 비슷하고 일부의 속성이나 관계만 다를 경우

여러개의 엔티티타입을 한 개의 엔티티타입으로 통합하고, 하나의 엔티티타입 안에 다른 엔티티타입의 모습을 서브타입으로 나누어 표시하는 경우

통합하고 표시하는 엔티티타입을 슈퍼타입



'DATABASE' 카테고리의 다른 글

속성 및 식별자  (0) 2018.01.02
엔티티 타입  (0) 2018.01.02
Oracle 11g Express Edition 설치  (0) 2017.12.04
아하홍홍 / 2018. 1. 2. 14:53 / DATABASE

속성


개념 - 업무에 피요한 엔티티에서 고나리하고자 하는 더 이상 분리되지 않은 최소의 데이터 단위


엔티티타입 엔티티 속성 속성값에 대한 관계를 분석하면 다음과 같은 결과 

1. 한 개의 엔티티타입은 두 개 이상의 엔티티 집합이어야 한다.

2. 한 개의 엔티티는 두 개 이상의 속성을 갖는다.

3. 한 개의 속성은 한 개의 속성 값을 갖는다.


속성의 분류


속성의 특성에 따른 분류

  • 기본속성 업무분석을 통해 바로 정의한 속성
  • 설계속성 원래 업무에는 존재하지 않지만 설계를 하면서 도출되는 속성
  • 파생속성 속성으로부터 계산이나 변형되어 생성되는 속성

엔티티 구성방식에 따른 분류


  • 엔티티를 식별할 수 있는 속성을  PK속성
  • 다른 엔티티와의 관계에서 포함도니 속성을 FK속성
  • PK,FK에 포함되지 않은 속성을 일반 속성


식별자


개념 - 여러 개의 집합체를 담고 있는 하나의 엔티티타입에서 각각의 엔티티를 구분할 수 있는 결정자다.


특징 

  • 식별자에 의해 엔티티타입 내 모든 엔티티들이 유일하게 구분되어야한다.
  • 특정 엔티티타입에 식별자가 지정되면 그 식별자는 변하지 않아야한다.
  • 주식별자의 겨웅 식별자가 지정되면 주식별자 속성에 반드시 데이터값이 있어야한다.



구분


주식별자/보조 식별자


 주식별자는 엔티티타입의 대표성을 나타내는 유일한 식별자

 보조식별자는 주식별자를 대신하여 보조적으로 엔티티를 식별할 수 있게한다.

 2가지 모두 엔티티를 유일하게 식별할 수 있게 하는 특징이 있다.

 주식별자는 엔티티타입에 한 개이다. PK

 보조식별자는 엔티티타입에 두 개 이상일수도 있다. Unique Index

 

내부 식별자/외부 식별자


내부 식별자는 자신의 엔티티타입 내에서 스스로 생성되어 존재하는 식별자.

 

 외부 식별자 다른 엔티티타입으로부터 관계에 의해 주식별자 속성을 상속받아 자신의 속성에 포함되는 식별자


 외부식별자 FK 외례키



단일 식별자/복합 식별자


주식별자의 구성이 한 가지 속성으로만 이루어진 경우 단일 식별자

2개 이상의 속성으로 구성된 경우 복합 식별자


원조 식별자/대리 식별자


주 식별자의 속성이 복합 식별자일 경우 여러 개의 속성을 묶어 하나의 속성으로 만들어 주식별자로 활용하는 경우가 대리 식별자


참고 서적 

 데인터베이스 설계와 구축 저자 이춘식 한빛미디어


'DATABASE' 카테고리의 다른 글

관계 엔티티 수퍼타입과 서브타입  (0) 2018.01.03
엔티티 타입  (0) 2018.01.02
Oracle 11g Express Edition 설치  (0) 2017.12.04
아하홍홍 / 2018. 1. 2. 09:56 / DATABASE

엔티티 타입


개념 업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 것으로 영속적으로 존재하는 단위 엔티티의 집합


특징

 1. 반드시 시스템을 구축하고자 하는 업무에서 필요하고 관리하고자 하는 정보여야한다.

 2. 유일한 식별자에 의해 식별이 가능해야 한다.

 3. 영속적으로 존재하는 엔티티의 집합이 되어야한다.

 4. 업무 프로세스는 그 엔티티타입을 반드시 이용해야 한다.

 5. 엔티티타입에는 반드시 속성이 포함되어야 한다.

 6. 엔티티타입은 다른 엔티티타입과 최소 한 개 이상의 관계가 있어야한다.


분류


유무형에 따른 분류

  •  유형 엔티티타입

물리적인 형태가 있고 안정적이며 지속적으로 활용되는 엔티티타입

  •  개념 엔티티타입

     물리적인 형태가 없고 관리해야 할 개념적 정보로 구분되는 엔티티타입

  •  사건 엔티티타입

    업무를 수행함에 따라 발생되는 엔티티타입



발생 시점에 따른 분류

 

  •  기본 엔티티타입

  업무에 원래 존재하는 정보로서 다른 엔티티타입과의 관계에 의해 생성되지 않고 독립적으로 생성되며 자신은 타 엔티티타입의 부모 역할

  • 중심 엔티티타입

 기본 엔티티타입에서 발생되고 그 업무에서 중심적인 역할을 한다. 데이터양이 많으며 다른 엔티티타입과의 관계를 통해 많은 행위 엔티티타입ㄷ을 생성


  • 행위 엔티티타입

 두 개 이상의 부모 엔티티타입에서 발생되고 내용이 자주 바뀌거나 데이터야잉 증가된다. 분석 초기 단계에서는 잘 나타나지 않으며 상세 설계 단계나 프로세스와 상관 모델링을 진행하면서 도출 될 수 있다.



엔티티타입의 명명


  •  가능하면 현업에서 사용하는 용어를 사용
  •  가능하면 약어를 사용하지 않음
  •  단수 명사를 사용
  •  엔티티타입에 부여되는 이름은 유일해야함
  •  가급적 엔티티타입이 생성되는 의미에 따라 이름 부여



 





참고 서적 

 데인터베이스 설계와 구축 저자 이춘식 한빛미디어

'DATABASE' 카테고리의 다른 글

관계 엔티티 수퍼타입과 서브타입  (0) 2018.01.03
속성 및 식별자  (0) 2018.01.02
Oracle 11g Express Edition 설치  (0) 2017.12.04
아하홍홍 / 2017. 12. 4. 15:43 / JAVA

우선 연동할 프로젝트에 OJDBC를 추가해주어야한다. 


Build Path에 들어가서 


오라클이설치된 oracle > product > 11.20 > server > jdbc > lib 폴더에 들어가면 


ojdbc6.jar 파일을 빌드패스 해준다.



DB연결을 할려면 우선 Class.forName(드라이버)를 등록해주어야 한다. 

드라이버 경로는 



저파일이다. 


String url = "jdbc:oracle:thin:@127.0.0.1:1521:XE";

String user = "moon";

String pwd = "1234";

String driver ="oracle.jdbc.driver.OracleDriver";

미리 선언한다. 

              Connection  conn = null;


  DB에 연결 할때는 예외처리가 필수 이다.

try{

Class.forName(driver);

con = DriverManager.getConnection(url, user, pwd);//접속할 db의 url 주소와 유저아이디, 패스워드 순으로 입려한다.

System.out.println("Db연결 성공");

}catch (Exception e) {

// TODO: handle exception

System.out.println("DB연결 실패");

}

연결 부분이다.


성공하면 Console에 Db연결 성공 이라고 나타날것이다.

'JAVA' 카테고리의 다른 글

소설같은 자바 자북 정리 1장 ~ 3장 정리  (0) 2017.11.28
아하홍홍 / 2017. 12. 4. 15:32 / DATABASE

우선 http://www.oracle.com/technetwork/indexes/downloads/index.html 에 접속하여



저부분을 클릭하여 들어간다.



수락을 클릭하면 각자의 컴퓨터에 맞는 파일을 클릭하여 다운로드 받는다.


다운로드 받은 파일을 압축을 푼후 setup파일을 클릭하여 설치를 한다.


설치가 완료되었으면 







'DATABASE' 카테고리의 다른 글

관계 엔티티 수퍼타입과 서브타입  (0) 2018.01.03
속성 및 식별자  (0) 2018.01.02
엔티티 타입  (0) 2018.01.02
아하홍홍 / 2017. 11. 28. 15:18 / JAVA

1장. 클래스의 기본 배경


데이터 타입이란 - 자료의 형태를 의미한다. 실세계의 데이터가 컴퓨터에 사용될 때에는 더 명확하게 구분하기 위하여 데이터 타입을 분류한다. ex) 수를 표현하는 데이터타입 int,long, float, double  문자를 표현 char, 참거짓 표현하는 boolean 등


역활

-변수에 데이터의 형태를 지정한다.

-데이터 타입은 변수를 만드는 역할을 한다.

-데이터 타입이 지정되어진 변수에는 데이터를 넣을 수 있다.


데이터 타입은 모양만을 만들기 때문에 스스로는 아무 일도 할수 없다.

컴퓨터내에서 사용할 변수를 만들 때 데이터 타입을 명시하는 이유는 어떠한 데이터가 들어갈때 메모리는 몇 바이트인가를 명시해 주는 것이다.


변수란 - 데이터를 담을 수 있는 그릇이다. 변수는 데이터타입 없이는 홀로 존재 불가능 데이터타입이 변수의 형태를 지정해주기 때문이다. 반드시 지켜져야 되는 규칙

변수 생성 방법

ex)

int x; // int타입의 변수 x 선언


변수는 데이터타입의 주어진 형태로 메모리 생성한 후 컴퓨터 내에 존재하며 변수가 생성 된 후에는 주어진 형태에 맞는 데이터를 넣을 수 있다.


상수란 - 그자체가 데이터라는 것을 의미

변수에 할당하는 상수의 표현


- int: : 10진수로 표현

- char : ' ' 작은 따옴표로 표현

- long : 숫자 뒤에 l 을 붙인다.

- float : 숫자 뒤에 f를 붙인다.

- double : 숫자 뒤에 d를 붙인다.


변수에 데이터를 넣는 것을 할당

데이터를 넣을때 규칙

- 오른쪽에서 왼쪽으로만 할당 가능하다.

- 변수끼리도 할당 가능하다.

- 변수에 이미 상수가 존재하더라도 다른 것을 할당하면 마지막에 할당한 것이 할당된다.


ex) 선언과 동시에 값입력 int x = 100;

     선언후 데이터를 할당 int x;   x=100;

     다수의 변수 선언과 동시 할당 int x=100 , y=100;

     다수의 변수 선언후 할당 int x,y; x=100, y=100;

     변수끼리 할당 int x=100; int y=x;


2장 기본 클래스의 제작

클래스란 - 새로운 데이터 타입을 만드는 데이터 타입 생성기


클래스 구조 

public class Person{

public int age;

public int height;

public float weight;

}


public class Test{

public static void main(String[] args){

 Person man = new Person();

man.age =25;

man.height= 180;

man.weight= 75.49d;


System.out.println("age : "+ man.age);

System.out.println("height : "+ man.height);

System.out.println("weight : "+ man.weight);

}

}


출력 결과

age : 25

height : 180

weight : 75.49


클래스는 데이터타입과 변수 메소드를 포함한다. 

접근제한을 둘수 있다. private public protected default

상속을 활용하여 새로운 클래스를 디자인하고 클래스를 확장할 수 있다.


클래스 변수를 생성하는 법


Person man= new Person(); //인스턴스 생성


Person이라는 클래스 데이터 타입이라는 man 변수 만 생성하고 new를 이용하여 메모리를 메모리를 생성 시키지 않을 시 Null Point Exception 이라는 에러 발생 ex) Person man; 



3장 Class


객체의 용어 

변수, 객체,인스턴스 


객체 변수 선언

Person man;

메모리 생성, instance 생성 : man = new Person();

동시에 객체변수 생성과 선언 Person man = new Person();


메소드는 함수이다.


public void sum(int a,int b){

int sum;

sum = a+b;

System.out.println("sum=" + sum);


}

값을 반환하지 않는 메소드는 void라 선언한다.


public int sum(int a, int b){

int sum;


sum=(a+b);

return sum;

}

리턴을 하는 메소드 차이는 메소드 명 앞에 void를 제외한 데이터 타입은 그 데이터 타입에 맞는 데이터를 반환해야한다.

오직 한개의 값만 리턴 가능하다. ex) public double xx 이런식으로 선언되어있으면 double 형의 데이터를 반환해야 한다.


Call by value


함수로 매개변수를 전달 할때 변수의 값을 복사하여 함수 내부인자로 전달한다. 복사된 값은 함수 내에서 지역적으로 사용되는 local value 라는 특징을 가지고 있다. 

쉽게 말해서 swap(int a,int b) 가 있다 매개변수 a,b에  swap(3,4) 라 대입하여도 메소드 자체에서 는 변화된 값을 가지고 있지만 메인에서는 그값은 바뀌지 않는다는 것이다 

ex)

public static void swap(int a,int b){

System.out.println("swap 매개변수 a ="+a);

System.out.println("swap 매개변수 b ="+b);

int temp = a;

a=b;

b=temp;

System.out.println("swap 매개변수 a ="+a);

System.out.println("swap 매개변수 b ="+b);

}

public static void main(String[] args) {

// TODO Auto-generated method stub

int a=10,b=20;

System.out.println("a = "+ a);

System.out.println("b = "+ b);

swap(a,b); 

System.out.println("메소드 호출 후 !!");

System.out.println("a = "+ a);

System.out.println("b = "+ b);

}



결과 값

a = 10
b = 20
swap 매개변수 a =10
swap 매개변수 b =20
swap 매개변수 a =20
swap 매개변수 b =10
메소드 호출 후 !!
a = 10
b = 20

참조 페이지 



접근 제어란
-메모리를 보유한 객체를 이용해서 멤버에 점 . 찍고 접근할수 있는 지 없는지를 결정


public 모든 클래스에서 접근이 가능하다. 
private 클래스 내에서만 접근이 가능하다.
protected 동일 패기지에 속하는 클래스와 하위 클래스 관계의 클래스에 의해 접근이 가능하다.




   종류 클래스 하위클래스  동일패키지   모든 클래스
  private          O    X    X     X
  (default)            O    X    O     X
  protected      O       O    O     X
  public          O     O    O     O


private멤버 변수 사용 이유
-자료를 보호하기 위해서
-내부적으로만 사용하기 위해서


클래스를 이용한 메모리 생성

 이름만 가진 객체

 Top t;

이름과 메모리를 가진 객체

 Top t= new Top();


객체변수는 참조 변수이다.

객체의 이름은 참조값이 할당되기 때문에 다른 참조값을 할당 하더라도 실제 객체에 연결된 내부의 메모리는 복사 되지 않는다. 단순한 참조값에 대한 값복사가 이루어진다.

 참조값만 가지고 있다면 해당 객체를 핸들할 수 있다.


'JAVA' 카테고리의 다른 글

Java JDBC 오라클 연동  (0) 2017.12.04
© 2017 아하홍홍 in Mwoon
Designed by DH / Powered by Tistory
/ /