'DATABASE/Modelling'에 해당되는 글 8건

  1. 2009.05.18 :: DB 모델링의 이슈
  2. 2009.05.18 :: Relationship에 관하여
  3. 2009.05.18 :: Entity에 관하여
  4. 2009.05.06 :: [DataBase] JDBC 작성 순서
  5. 2009.05.06 :: [DataBase] 데이터의 무결성
  6. 2009.05.06 :: [DataBase] 중요한 정규화
  7. 2009.05.06 :: 제2정규형(2NF)
  8. 2009.05.06 :: 제1정규형(1NF)
DATABASE/Modelling 2009. 5. 18. 00:19
  • Entity Type의 병합 기준
  • Entity Subtype 관리 방안
  • Code 관리 방안
  • 집계 Entity Type 운용 방안
  • Index (index, primary index(key) 등...) 관리 방안
  • Relationship의 물리적 구현
  • RI(Referential Integrity) 운용 방안
  • 논리모델과 물리 모델과의 차이 파악과 관리 방안
posted by 나는너의힘
:
DATABASE/Modelling 2009. 5. 18. 00:18
  Relationship은 두 엔티티 타입 간의 관계를 표현하는데눈 양방향으로 표시. 관계를 표시하는 방법은 카디널리티(cardinality)와 옵셔널리티(optionality)가 사용
    
    cardinality
        엔티티 인스턴스가 다른 엔티티 타입의 엔티티 인스턴스와 맺을 수 있는 릴레이션쉽 인스턴스의 수효
    optionality
        엔티티 인스턴스가 다른 엔티티 타입의 엔티티 인스턴스와 맺어야 하는 관계가 필수인지 선택인지 표시

카디널리티와 옵셔널리티

카디널리티와 옵셔널리티

엔티티간 단방향

엔티티간 단방향 표시 (사용안함)

엔티티간 양방향

엔티티간 양방향 표시 (양방향으로 표시)

posted by 나는너의힘
:
DATABASE/Modelling 2009. 5. 18. 00:18
Entity
    엔티티 타입이 분류된 정보의 집합체를 총칭한다면, 엔티티 인스턴스(entity instance)는 엔티티 타입에 포함되어 있는 낱개의 정보를 의미

Entity 분류
    엔티티 타입은 사물, 사건, 개념 등의 3가지 범주로 분류

    - 사물 : 형체를 갖고 있는 정보
        ex) 고객, 직원, 대리점 ...
  • 사물 엔티티 타입은 다른 범주에 속해 있는 엔티티 타입 보다는 도출이 용이
  • 엔티티 인스턴스의 발생이 빈번하지 않으며 변경되거나 없어지지 않으면서 계속 활용
  • 다른 엔티티 타입보다는 우선적으로 도출되어야 함.
  • 사물 엔티티 타입의 구조 변경은 전체 데이타 모델에 심각한 영향을 미치므로 신중하게 검토한 후 엔티티 타입의 구조를 결정하여야

    - 사건 : 기업 활동을 통해서 생성되고 활용되는 정보들
        ex) 주문, 구매, 판매, 청구 ...
  • 해당 업무에 대한 정확한 지식을 갖고 있어야만 도출이 가능
  • 정보 활용을 극대화하기 위해서는 정보를 분류하는 기준이 모든 엔티티 타입에 일관되게 적용되어야 함.
  • 엔티티 인스턴스의 발생이 빈번하며, 한번 생성된 엔티티 인스턴스도 자주 변경
  • 엔티티 인스턴스의 수효가 많으며 항상 증가하게 되므로, 오래된 정보는 주기적으로 정리하는 것이 바람직

    - 개념 : 기업의 필요에 의하여 임의적으로 만들어진 개념
        ex) 부서, 코드, 고객군, 상품군 ...
  • 도출이 어려울 뿐만 아니라, 시간이 지남에 따라 개념이 변경되거나 추가되는 등 엔티티 타입 자체의 안정성이 보장되지 않는다
  • 기업의 시각에서 관찰하기 위하여 추가되는 경우가 대부분
  • 엔티티 인스턴스나 엔티티 타입의 변동이 기업의 정책 변경이나 환경 변경 시에만 이루어지며, 그 이외에는 거의 변동되지 않는다
posted by 나는너의힘
:
DATABASE/Modelling 2009. 5. 6. 11:33


1. JDBC드라이버 로딩
오라클 - oracle.jdbc.driver.OracleDriver

  try{
  Class.forName("oracle.jdbc.driver.OracleDriver");//대소문자 주의
  }catch(ClassNotFoundException cnfe){
   cnfe.printStackTrace();
  }

2. 데이터베이스 커넥션 구함

 public Connection getConnection(){
  Connection con=null;
  String dburl = "jdbc:oracle:thin:@localhost:1521:orcl";//127.0.0.1루프백, 도메인, 로컬호스트
  String dboid = "scott";
  String dbopass = "tiger";
    
  try{
  con = DriverManager.getConnection(dburl,dboid,dbopass);
  }
  catch(SQLException e){
   e.printStackTrace();
  }//end catch
  
  return con;
 }
//singletonpattern이용

3. 쿼리 실행을 위한 statement 객체 생성

Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;

   con = SingletonConnection.getInstance().getConnection();
   StringBuffer selectQuery = new StringBuffer();
   selectQuery.append("select num, name, address, phone, age from classinfo");
   pstmt = con.prepareStatement(selectQuery.toString());
  
4. 쿼리 실행

 rs = pstmt.executeQuery();

5. 쿼리 실행 결과 사용

 while(rs.next()){
    //조회된 결과를 자바빈즈로 생성
    xmlDateDTO xdd = new xmlDateDTO(
            rs.getInt("num"),
            rs.getInt("age"),
            rs.getString("name"),
            rs.getString("address"),
            rs.getString("phone"));//빈즈를 list로 관리
    classList.add(xdd);
   }

6. statement 종료

if(rs!=null){rs.close();}
if(pstmt!=null){pstmt.close();}

7. 데이터베이스 커넥션 종료

if(con!=null){con.close();}
posted by 나는너의힘
:
DATABASE/Modelling 2009. 5. 6. 11:33


※데이터의 무결성
- 데이터의 정확성과 일관성이 보장된 상태
- 무결성 제약 조건은 데이터베이스에 저장된 데이터의 정확성을 보장하기 위해 정확하지 않은 데이터가 데이터베이스 내에 저장되는 것을 방지하기 위한 제약 조건

※무결성의 종류
1. 엔티티 무결성 : 한 엔티티는 중복과 누락이 있을 수가 없음. 동일한 PK를 가질 수 없으며 PK의 속성이 Null을 허용할 수 없음
2. 참조 무결성 : 외래키가 참조하는 다른 개체의 기본키에 해당하는 값이 기본키 값이나 Null이어야 함
3. 속성 무결성 : 속성의 값은 기본값, Null여뷰, 지정된 도메인(데이터타입, 길이)규칙을 준수하여 존재해야 함
4. 사용자 무결성 : 사용자의 의미적 요구사항을 준수해야 함

※제약조건의 종류
1. 엔티티 무결성 : Primary Key. Unique Index
2. 속성 무결성 : Check, Null/Not Null, Default
3. 참조 무결성 : Foreign Key
4. 사용자 정의 무결성 : Trigger, User Define Data Type

※각 요소의 내용

Primary Key

컬럼의 유일성 보장, PK Null이 될 수 없음

Unique Index

다중의 보조 키 개념을 지원, 컬럼의 유일성 보장, Null 허용

Foreign Key

테이블 간의 논리적 관계가 유지됨을 보장, FK는 참조하는 테이블의 PK, Null 허용

Cascaded Option : Master 삭제 시 레코드가 함께 삭제

Nullified Option : Master 삭제 시 해당 값을 Null로 세팅

Restricted Option : FK가 존재하면 Master 레코드를 삭제할 수 없음

Data Type

데이터의 형을 제한하여 데이터 무결성 유지

Check

데이터를 추가할 때마다 SQL서버가 해당 값이 해당 컬럼들에 지정된 Check제약을 위배하는지를 검사함으로써 데이터 무결성 유지

Default

특정 컬럼에 대해 명시적으로 값을 입력하지 않은 경우에 SQL서버가 자동적으로 지정된 값을 삽입할 수 있도록 함으로써 데이터 무결성 유지

INSERT 또는 UPDATE에서 DEFAULT 키워드를 사용할 수 있음

Trigger

테이블의 내용을 변경하려는 특정 사건(DB연산)에 대해서 DBMS가 미리 정의된 일련의 행동(DB연산)을 수행하는 메커니즘, DBMS서버에 의해 자동으로 호출

데이터에 대한 변경을 시도할 때마다 자동적으로 호출

트랜젝션의 철회(rollback)와 같은 동작을 수행가능

저장 프로시저의 특별할 형태로서 SQL의 모든 기능을 이용가능

참조 무결성을 위해 사용가능

posted by 나는너의힘
:
DATABASE/Modelling 2009. 5. 6. 11:32


※정규화(Normalization)
- 테이블의 속성들이 상호 종속적인 관계를 갖는 특성을 이용하여 테이블을 무손실 분해하는 과정
- 가능한 한 중복을 제거하여 삽입, 삭제, 갱신 이상의 발생 가능성을 줄이는 것

정규화

정규화 내용

1차 정규화

복수의 속성값을 갖는 속성을 분리

2차 정규화

주식별자에 종속적이지 않은 속성을 분리, 부분종속 속성을 분리

3차 정규화

속성에 종속적 속성을 분리, 이전(이행적)종속(Transitive Dependency) 속성을 분리

보이스-코드 정규화

다수의 주식별자를 분리

4차 정규화

다가 종속(Multi-Valued Dependency) 속성 분리

5차 정규화

결합 종속(Join Dependency)일 경우, 두 개 이상의 N개로 분리


※함수적 종속
- 어떤 테이블 R에서 X와 Y를 각각 R의 속성집합의 부분 집합이라고 하면, 속성 X의 값 각각에 대해 시간에 관계없이 항상 속성 Y의 값이 오직 하나만 연관되어 있을 때, Y는 X에 함수적 종속 또는 X가 Y를 함수적으로 결정한다고 하고, X→Y로 표기한다.
- X→Y의 관계를 갖는 속성 X와 Y에서 X를 결정자, Y를 종속자라고 한다.

위 표를 함수적 종속성으로 보자면 다음과 같다.

종속성

개념

함수적 종속성(1NF)

릴레이션의 한 속성 X가 다른 속성 Y를 결정지을 때 Y X에서 함수적으로 종속

부분함수적 종속성(2NF)

Y X의 부분 집합에 대해서도 함수적으로 종속되는 경우

이행함수적 종속성(3NF)

릴레이션 R에서, AX이고 XY이면 AY이다

결정자함수적종속성(BCNF)

함수적 종속이 되는 결정자가 후보키가 아닌 경우

다중값 종속성(4NF)

한 관계에 둘 이상의 독립적 다중값 속성이 존재하는 경우

조인 종속성(5NF)

둘로 나눌 때는 원래의 관계로 회복할 수 없으나 셋 또는 그 이상으로 분리시킬 때는 원래의 관계를 복원할 수 있는 특수한 경우


※완전 함수적 종속
- 어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수적 종속이면서 속성 집합X의 어떠한 진부분집합 Z(Z⊂X)에도 함수적 종속이 아닐 때
- 어떤 속성이 기본키에 대해 완전히 종속적일 때

※부분 함수적 종속
- 어떤 테이블 R에서 속성 Y가 다른 속성 집합 X 전체에 대해 함수적 종속이면서 속성 집합X의 임의의 진부분집합 Z(Z⊂X)에 대해 함수적 종속일 때
- 어떤 속성이 기본키의 일부에 대해 종속적일 때

※정규화와 정규형
- 정규화 : 무엇이 수행되어야 하는 과정
- 정규형 : 무엇이 수행된 결과
posted by 나는너의힘
:
DATABASE/Modelling 2009. 5. 6. 11:18

1. 1NF여야한다.

2. 부분적 함수 의존이 없다.
부분적 함수 종속 관계를 피하는 간단한 방법으로는 새로운 키(인덱스용)를 하나 만드는 것입니다.
테이블의 모든 열이 기본키의 일부이면 1NF의 테이블을 2NF이기도 합니다.

※함수적 종속관계(함수적 종속성  Functional Dependency)
열의 데이터가 변경될 때 다른 열의 데이터가 변경되어야하면, 변경되는 열에 함수적으로 종속한다고 합니다.

※부분적 함수 종속
키가 아닌 열이 합성키의 전부가 아닌 일부에 종속되는 경우.

※이행적 함수 종속(Transitive Functional Dependency)
키가 아닌 열이 키가 아닌 다른 열과 관련 되는 경우
키가 아닌열이 변경되었을 때 다른열의 변경을 야기시킨다면, 이행적 종속열을 보유하고 있는 것 입니다.

※함수 종속 관계를 명시하는 방법
T.x ->; T.y
(T라는 테이블에서 열y는 열x에 함수적으로 종속된다. x가 변경되면 y가 따라서 변경되야 한다.)

※합성키
여러개의 열들로 구성되어 유일무이한 키를 만드는 기본키.
posted by 나는너의힘
:
DATABASE/Modelling 2009. 5. 6. 11:17

테이블에 원자적 데이터가 있다고해서 정규테이블이 된 것은 아닙니다. 완전한 정규 테이블이 되려면 제1정규형(1NF)의 형태여야만 합니다.

1NF형태를 갖추려면 다음의 두 규칙을 만족시켜야 합니다.

1. 각행의 데이터들은 원자적 값을 가져야 한다.

2. 같은 데이터가 여러 열에 반복되지 말아야 한다.


※원자적인 데이터
원자는 쪼갤수 없는 작은 조각의 정보입니다. 데이터가 원자적이면 이는 쪼갤 수  없는 가장 작은 조각으로 쪼개졌다는 의미입니다. 데이터베이스에서 원자적인 데이터란 쓰는 사람의 입장해서 충분하게 원자적인 것이면 됩니다.
- 원자적 데이터 규칙1 : 원자적 데이터로 구성된 열은 그 열에 같은 타입의 데이터를 여러개 가질 수 없다.
- 원자적 데이터 규칙2 : 원자적 데이터로 구성된 테이블은 같은 타입의 데이터를 여러열에 가질 수 없다. 

※기본키
기본키는 각 레코드를 식별하는데 사용합니다. 이는 곧 기본키열의 데이터는 중복될수 없다는 의미입니다.
- 기본키는 NULL이 될수 없습니다.
- 기본키는 레코드가 삽입될 때 값이 있어야 합니다.
- 기본키는 간결해야 합니다.
- 기본키의 값은 변경불가입니다
posted by 나는너의힘
: