본문 바로가기
Made By 냐옹이/냐옹이 강의

냐옹아~ 이스트소프트 필기 준비하자

by 건우아빠유리남편 2009. 8. 23.
반응형

-오버로딩과 오버라이딩의 차이

오버로딩은 정적 바인딩
오버라이딩은 동적 바인딩

아래의 예는 메소드 오버로드 예제.

class overloadingexample {

static int Add( int a, int b) {
return a+b;
}
static int Add( int a , int b, int c ) {
return a+b+c;
}
static void Main() {

int r1 = Add(1,2); //같은 Add 메소드인데 매개변수의 갯수를 달리했

죠?... 이게 메소드 오버로딩 입니다.
int r2 = Add(1,2,3);
}


Add 메소드는 매개변수가 다른 2가지 형태가 있는데 메소드를 사용 할

때 어느것을 사용할지 명시적으로 지정하지 않아도 된다는 이야기 입니

다. 매개변수 뿐 아니라 함수 Signature 의 모든 요소들이 Overloading

의 대상 입니다(Add(ref int a, int b) )

메소드 Signature는 클래스안에서 유일하며 메소드 이름, 파라미터의

갯수등입니다.

주의 : 파라미터 이름, 메소드의 리턴 타입은 메소드 Signature가 아닙

니다.

 

결국 메소드 오버로드는 하나의 클래스 내부 등에서 주로 메소드의 파

리미터 갯수, 타입을 변화 시키면서 객체 지향의 한 특징인 다형성

(Polymorphism)을 구현하기 위한 하나의 방법 입니다.

 

이번에는 메소드 오버라이딩(Method Overriding)에 대해 알아 보기로

합니다.

메소드 오버라이딩은 상.하위 클래스 관계에서 나타나는 것으로 상위

클래스의 메소드를 가상 메소드(virtual method)로 정의하고 하위 클래

스에서 override 라는 키워드를 이용하여 재정의 할 수 있습니다. 객체

지향에서 보았을때 상위 클래스의 메소드를 하위 클래스의 입맛에 맞게

바꾸는 개념 으로 다형성을 구현하는 경우 입니다, 즉 하위 클래스의

입맛대로 다양하게 메소드를 조작함으로서 객체 지향의 다형성을 구현

하는 겁니다. 아래의 예제를 보시면 보통 개가 "멍멍" 짖는 다고 개 클

래스에서 정의 했지만 푸들이라는 개는 자신이 다르게 짖는 다는것을

짖다() 라는 메소드를 다시 정의(재정의) 함으로서 나타내었습니다.

아래의 예는 메소드 오버로딩과 오버라이딩의 예 입니다.

[예제]

using System;

class 개
{
public virtual void 짖다()
{
Console.WriteLine("멍멍~~~");
}
}

class 푸들 : 개
{
public override void 짖다()//상위 클래스인 개의 짖다를 다시 정의(

재정의, Overriding) 함, 묵시적인 재정의
{
Console.WriteLine("푸들푸들~~~");
}
public void 짖다(string s)//오버로드
{
Console.WriteLine(s);
}
}

class Program
{
public static void Main()
{
푸들 dog = new 푸들();

dog.짖다(); //푸들의짖다() 불림
dog.짖다("왈왈"); //푸들의 짖다(string s) 불림

개 dog1 = new 개();

dog1.짖다(); //푸들의짖다() 불림
//dog1.짖다("왈왈"); //오류, 개라는 클래스는 짖다(배개변수) 형태는

가지고 있지않다.

개 dog2 = new 푸들();

dog2.짖다(); //개의짖다() 불릴려 다가 하위 클래스에서 재정의 된 짖

다()가 호출됨... 메소드 재정의
//dog2.짖다("왈왈"); //오류, 개라는 클래스는 짖다(배개변수) 형태는

가지고 있지않다.
}
}


[결과]

푸들푸들~~~
왈왈
멍멍~~~
푸들푸들~~~

- 트리거와 프로시저에 대한 설명


*함수나 프로시저나 트리거나 그 표현해주는 문법은
거의 별다를게 없습니다. 보통 책들을 보면 문법이
먼저 나오던데 저는 문법이야 보면서 하다보면
되는거고 함수가 뭐고 프로시저가 뭔지, 트리거가
뭔지를 확실히 아는게 중요하다고 생각합니다.

보통 책들이 차이가 뭔지 그리고 실제 사용하는 모습은
보여주지 않음으로서 강사가 지만 아는 소리 떠들다가
끝나는 걸 자주 봅니다..
아니면 OCP교재에서 나오는 식으로 말하던가...
그래서 결론적으로 전 비교를 함으로서
제대로 파악하자는 거죠..


(1) 함수, 프로시저, 트리거 비교...

==> Function
일단 함수를 살펴보죠...
함수는 그 사용하는 모습을 보면 쉽게 이해가 됩니다.
(EX)
select NVL(f_bal_amt("잔액분류코드","값","계정코드","일자"),0) from dual;

위의 예는 인자(parameter)값이 4개를 가지는 f_bal_amt 라는 함수를
사용해서 조회하고 조건에 따라 연산처리를 하고 나서
그 최종적인 결과값을 리턴하고 만약 그 값이 널이면 0으로 정의해주는
간단한 쿼리입니다.
물론 dual은 여러분도 알다싶이 dummy table입니다.
더미테이블은 그냥 임시로 사용하는 테이블이구요..
보통 저장을 하지 않고 어떤 계산이나 연산정도만 간단히 해줄때
사용합니다.. 보통 select sysdate from dual;
뭐 이런식으로 현재시간을 얻을때도 잘 사용하구요..

즉...함수는 trunc 함수나 round 함수처럼 연산처리를 해주는 함수이지만
사용자가 인자(parameter)의 개수나 타입, 그리고 연산과정을 정의해주고
사용한다고 생각하시면 쉽습니다.


==> Procedure 프로시저
다음은 자바에서 프로시저를 사용하는 예입니다.

(EX)
public int run_procedure(String invno, BigDecimal vsnp, BigDecimal vqty)
{
int z = 0;
try {
CallableStatement cstm = null;
String error = "";
cstm = cpane.module.getDatabase().createCallableStatement
("call pms.do_po_pr( ?, ?, ?, ? )");
cstm.setString(1, invno); //간판/물품표번호
cstm.setBigDecimal(2, vsnp ); //수용수
cstm.setBigDecimal(3, vqty ); //수량
cstm.registerOutParameter(4,Types.VARCHAR); //OUT ERROR
cstm.execute();
error = cstm.getString(4);
cstm.close();
z = 1;
}catch(Exception e){
JOptionPane.showMessageDialog
(cpane,"자료생성중에 문제가 발생했습니다.\n 자료가 생성되지 않았습니다.\n"
+ ((java.sql.SQLException)e).getMessage(),"ERROR",JOptionPane.ERROR_MESSAGE);
e.printStackTrace();
z = 0;
}
return z;
}


일단 처음으로 주의깊게 볼 부분은 ("call pms.do_po_pr( ?, ?, ?, ? )");
바로 프로시저를 콜하는 겁니다.
cstm.setString(1, invno); //간판/물품표번호
cstm.setBigDecimal(2, vsnp ); //수용수
cstm.setBigDecimal(3, vqty ); //수량
cstm.registerOutParameter(4,Types.VARCHAR); //리턴되는 값

그리고 이부분은 그 콜하는 프로시저에 파라미터값을 넣어주는 겁니다..

************************************************************
그럼.. 함수와 프로시저와의 차이는 뭘까요? 문법적인것말구요..
함수는 쿼리문에서 그냥 round 함수처럼 사용하는 것이고...
프로시저는 자바와 같은 응용프로그램에서 call(호출)해서 사용하는 겁니다.
젠장..그냥 트리거도 말하죠.
트리거는 오라클내에서 누가 호출하지 않아도
특정테이블에 데이터값이 입력되거나, 수정되거나 . 삭제될때의
값을 체크하여 조건에 따라 정의해둔 연산처리가 되는 자동함수쯤으로
생각하면 됩니다.
즉 굳이 호출하지 않아도 알아서 한다는 거죠...
*****************************************************************
==> Trigger 트리거
위에서 말한바와 같이 트리거는 어떤 특정테이블의 특정 컬럼값이
정의해둔 조건에 만족하면 자동으로 처리되는 것입니다.
따라서 호출해주는 처리를 해줄 필요가 없습니다.

 결국 그 차이점이라는 건 별표부분에서 언급한 내용이 될것입니다.
함수, 프로시저, 트리거는 일단 생성하면 오라클 메모리상에
계속 상주하면서 처리되는 겁니다..

함수와 프로시저의 차이는?
함수는 쿼리에서 그냥 일반함수처럼 사용하면 된다.
프로시저는 위에 예로 사용된 자바와 같은 응용프로그램에서
호출해서 사용한다.

(함수나 프로시저)와 트리거의 차이는?
함수나 프로시저는 호출해서 사용해야 한다.
트리거는 특정테이블의 특정컬럼의 데이타값이 미리정의해둔 조건에
만족하면 자동으로 실행된다.


- String과 StringBuilder의 차이

자바에서 문자열 처리는 String, StringBuffer, StringBuilder를 이용하여 프로그램한다.

가장 많이 사용되는 클래스는 아무래도 String일것이다.

코드를 보면

String sql = "select * “;

sql += "from table where id = '";

sql += userid;

sql = "' order by id";

return sql;


일반적으로 아주 많이 사용되는 형식이다. 그러나 이런 String객체의 사용에는 주의 할점이 있다. 먼저 jdk1.4에서까지만 해도 StringBuilder가 없고 1.5 이후에서 만들어진 형식이다.

위 코드를 컴파일 한 후 그 클래스 파일을 디컴파일해서 보면

StringBuilder sql = new StringBuilder("select * from table where id = '");

sql.append(userid);

sql.append("' order by id");

return sql.toString();

과 비슷하게 만들어진다.

즉, String 클래스의 객체 sql을 StringBuilder로 자동으로 변경하여 코드를 생성해낸다.

왜 이런 결과가 나오는가?

먼저 java API를 보면

StringBuffer나 StringBuilder는 빠르고 하나의 객체에서 동작한다고 한다. 그래서 위의 형태로 변경해서 컴파일될것이다.

이들이 수행되는 결과를 보면 다음과 같다.

위의 4라인과 같은 형식을 100번 수행하다고 가정하여 이 메소드를 한번 수행하면 얼마의 메모리를 사용하는지 확인해보면

구분
 결과
 
메모리사용량
 10회평균 약 5MB
 
응답시간
 10회평균 약 5ms
 이 코드를 StringBuilder를 이용해서 변경하면

구분
 결과
 
메모리사용량
 10회평균 약 371kb
 
응답시간
 10회평균 약 0.3ms
 과 같이 나온다.

그럼 정확하게 이 클래스들에 대해서 보자.

위에서 말했듯이 StringBuilder는 JDK1.5에서 새로 추가된 클래스다. StringBuffer와 동일한 메소드를 제공한다. 그리고 StringBuffer는 쓰레드에 안정하게 설계되어있다.

좀더 자세히 각 클래스의 수행형식을 보자.

아래와 같은 코드가 있다.

String a = "";

String avalue = "abcde";

a += avalue;

a += avalue;


100에서 시작한다고 보고....

abcde
 
주소=100

abcde
 
abcde
 
주소=150

이런식으로 작동하는것이 String 클래스다.

즉, 데이터를 뒤에 붙일때마다 새로운 객체가 생성되는것이다.

이러식으로 100회의 데이터를 덧붙일때마다 쓸모없는 객체가 생성되고 이 객체는 GC의 대상이 된다. 당연히 GC는 CPU의 시간을 소비하게 된다.

이제 StringBuilder와 StringBuffer가 동작하는것을 보면...

abcde
 
주소=100

abcde
 
abcde
 
주소=100

와 같이 객체를 새로 생성하지 않고 작동된다.

그러면 모든 것에 String을 사용하지 않아야 하는가? 다음과 같을 경우 String 클래스를 사용한다.

. String은 짧은 문자열을 더할 경우.

. StringBuffer는 스레드에 안전한 프로그램이나 개발중인 시스템의 부분이 스레드에 안전한지 모르는 경우 사용

. StringBuilder는 쓰레드안전과 상관없이 프로그램을 개발하는곳에서 사용.

위 와 같은 경우에 사용하면 된다.

다른 이론
3. String과 StringBuilder 비교

  string은 프로그램을 짜면서 가장 빈번하게 사용되는 자료형의 하나이다. string을 쓰는데 있어서 흔히들 string 연산이 많을 경우 string 타입 대신에 StringBuilder 객체를 쓰라는 얘기를 들어 보았을 것이다. 여기에서는 string과 StringBuilder의 차이에 대해 다루며 각각을 어떻게 이용하는 것이 효율적인지에 대해 다루어보도록 하겠다.

  먼저 아래의 간단한 프로그램을 보도록 하자.

class Program

{

    static void Main(string[] args)

    {

        string str1 = ""

        StringBuilder strBuilder = new StringBuilder();


        // string object

        Console.WriteLine("\nString Object\n");

        for (int i = 0; i < 17; i++)

        {

            str1 = str1 + "A"

            Console.WriteLine(GC.GetTotalMemory(true).ToString());

        }


        // StringBuilder object

        Console.WriteLine("\nStringBuilder Object\n");

        for (int i = 0; i < 17; i++)

        {

            strBuilder.Append("A");

            Console.WriteLine(GC.GetTotalMemory(true).ToString());

        }

    }

}
  위의 예제 소스는 간단히 프로그램의 메모리 사용량을 비교해보기 위해 만들어본 소스이다. 단순히 증가되는 프로그램 영역의 메모리를 카운트하는 용도로 GetTotalMemory 라는 메서드를 이용해서 비교해 보았다. 이제 결과를 보기로 하자.

 String Ojbect

0 : 643664

1 : 643688

2 : 643688

3 : 643692

StringBuilder Object

4 : 643716

 그림. 실행결과

   string

  실행결과 그림에서 보이는 바와 같이 string 으로 선언된 str1 변수의 경우 17번 반복하는 동안 연속적인 메모리 증가를 보인다. 실제 string의 내부적인 구현은 char 타입의 연속적인 열의 형태로 구성되는데, 선언시 초기화되는 데이터의 값으로 string 타입 변수의 크기가 결정된다고 보면 된다. 위의 소스와 같이 “+”와 같은 결합 연산자를 이용하여 경우 데이터의 크기가 증가하므로 할당되는 메모리 역시 증가되어야 한다.

   이제 코드를 상세히 보도록 하자. 위의 소스에서 다룬 스트링 연산에서,

 str1 = str1+"A";
  부분을 디스어셈블러를 통해 추적해 보면 Concat(string, string)를 호출하는 것을 볼수 있다.

  IL_0062:  call       string [mscorlib]System.String::Concat(string, string)
   실제 Concat 라는 메서드를 한번 보기로 하자.

public static string Concat(string str0, string str1)

{

    if (string.IsNullOrEmpty(str0))

    {

        if (string.IsNullOrEmpty(str1))

        {

            return string.Empty;

        }

        return str1;

    }

    if (string.IsNullOrEmpty(str1))

    {

        return str0;

    }

    int num1 = str0.Length;

    string text1 = string.FastAllocateString(num1 + str1.Length);

    string.FillStringChecked(text1, 0, str0);

    string.FillStringChecked(text1, num1, str1);

    return text1;

}
  소스에서 눈여겨 봐야 할 부분은 FastAllocateString이라는 메서드 이다. 여기에서 보이는 것과 같이 새로 메모리를 할당하는 것을 볼 수 있다. 실제 Concat 메서드를 통해 볼 수 있듯이 새로운 문자열과 결합해서 문자열을 생성해내야 하는 문자열 연산은, 연산이 이루어질때마다 새로운 string 개체를 생성하고 스택 내 메모리를 재할당하는 과정을 반복하게 된다. 문자열에 대해 증가에 대해서 “A"라는 문자를 증가시킬 때 인덱스가 2씩 증가할 때 마다 메모리가 증가되는 이유는 char 형이 실제 2바이트를 이용하지만 할당되는 메모리 단위기 4바이트씩 증가되기 때문에 실행결과 그림과 같이 보인다.

  string 타입의 제약은 메모리 재할당 문제로 인해 발생한다. 메모리의 안전한 보호와 동적인 수정이 가능한 구조로 가기 위해 실제 string 타입이 선택한 방법은 수정요구시 마다, 새로운 string 타입을 생성하고 적절한 사이즈로 메모리를 할당하고 문자열을 배정하는 것이라고 보면 된다.


  StringBuilder

  처음 나온 예제소스에서 보면 17번 반복해서 문자열을 한자씩 더해가고 있다. 그 이유는 StringBuilder 개체를 생성할 때, 초기에 그 크기를 선언하지 않으면 16으로 크기가 자동으로 결정된는 것을 보여주기 위해서 문자열의 크기를 맞추어 보았다. 출력 결과를 보면 “A"라는 문자가 16개가 된 후 StringBuilder 개체 역시 메모리 재 할당 과정을 수행하게 된다. 따라서 테스트용으로 작성된 소스의 17번째 반복 시점에서 메모리 사용이 증가하는 것을 발견할 수 있게 된다.

  메모리 재할당이 이루어지는 단계에서는 새로운 StringBuilder 개체 생성과 기존 크기의 2배 크기로 메모리 할당, 기존 데이터의 복사가 이루어진다.

  자 이제, StringBuilder 개체 생성시 적절한 사이즈를 설정한 후 작업을 하게 되면 재할당 과정에 드는 리소스의 사용을 최소화 할 수 있다는 것을 알 수 있을 것이다.

  StringBuilder에 대한 좀더 상세한 내용은 다음에 더 다루어 보도록 하겠다.

  결론

  string과 StringBuilder는 비슷한 용도로 활용되면서, 많은 차이점을 가지고 있다. 일반적으로 얼마되지 않는 스트링 연산과 데이터를 이용하는데 있어서 string이 성능상 더 나을 수도 있다. 그럼 StringBuilder을 왜 사용하는 것일까?

  아래의 간단한 성능 테스트 코드를 보자.

class Program

{

    static void Main(string[] args)

    {

        StringBuilder strBuilder = new StringBuilder(100000);

        string str1 = ""


        // 시간 측정을 위한 코드

        Stopwatch stopWatch1 = new Stopwatch();

        Stopwatch stopWatch2 = new Stopwatch();

        TimeSpan time1, time2;


        // string object

        Console.WriteLine("\nString Object");


        stopWatch1.Start();

        for (int i = 0; i < 100000; i++)

        {

            str1 = str1 + "A"

        }

        stopWatch1.Stop();


        time1 = stopWatch1.Elapsed;

        Console.WriteLine("string 반복시간 : " +

                        time1.Milliseconds.ToString());


        // StringBuilder object

        Console.WriteLine("\nStringBuilder Object");

        stopWatch2.Start();

        for (int i = 0; i < 100000; i++)

        {

            strBuilder.Append("A");

        }

        stopWatch2.Stop();


        time2 = stopWatch2.Elapsed;

        Console.WriteLine("StringBuilder 경과 시간 : " +

                         time2.Milliseconds.ToString());

   }

}
  위의 소스는 시간 측정을 하기 위해 System.Diagonstics 의 Stopwatch 클래스를 이용하는 코드와 결과를 명확히 하기 위해 반복 횟수를 100000으로 조절하여 테스트 한 소스이다. 변수 할당같은 경우 소요시간이 엄청 짧기 때문에 반복횟수를 크게 했다. 결과는 아래와 같다.

String Object

string 반복시간 : 536

 StringBuilder Object

StringBuilder 반복시간 : 7


그림. 실행결과

   동일한 100000번의 반복에서 경과시간을 비교해볼 수 있을 것이다. 이렇듯 많은 연산이 요구되는 경우 string은 성능상에 많은 문제를 일으킬 수 있다는 것을 보여주고 싶었다.

   많은 연산이 수행되는 경우 효과적인 성능을 보장할 수 있기에 StringBuilder 클래스를 이용해서 작업을 수행하는 것이다. 적절한 크기를 명시하고, 적절한 장소에서 이용된다면 편리하고 시스템에 덜 부담을 주는 코드를 만들어 낼 수 있게 된다.

  적당한 것 예를 들어, 데이터베이스 컨넥션 스트링이나 기타 문자열 결합 형식 등을 통한 일반적인 몇 자 안되는 문자열 생성 등에는 string 타입 변수 선언을 해서 이용하는 것이 이득이고, 대규모의 문자열에서 잦은 수정과 반복을 통한 추가 등이 이루어져야 한다면 StringBuilder을 쓰는게 좋을 수 있다.


- Boxing과 UnBoxing의 차이

원래는 이 부분이 데이터 형 변환 쪽에 들어가야 하는데 혹시... 데이터 형 변환 강좌를 보지 않고

 넘어가시는 분들도 있겠다 싶어 따로 뺐습니다. 양은 많지 않지만 중요한 부분이라서요...

 그렇다고 완전하게 이해하고 외울 필요는 없구요. 간단하게 용어를 알고 의미를 아시면 되겠습니

 다.

박싱과 언박싱 이것 역시 간단하게 먼저 정의를 하지요...

 Boxing이란 Value-Type을 Reference-Type(Object형) 으로 변환하는 것을 의미하구요.

 UnBoxing이란 Boxing을 반대 개념입니다.

 감이 잘 안오시죠... 예제를 보겠습니다. 아...차~ 모든 데이터 형식은 Object형의 자식이다,

 Value-Type은 스택에 Reference-Type은 Heap에 생성됩니다.

 int p = 123;

 object o;

 o = p;  //명시적 변환으로 (object)p로 해도 무방...

 이런 구문이 있다고 한다면... 값 타입인 변수 p의 값을 참조 타입인 변수 o에 넣습니다.

 이때 바로 Boxing이 일어납니다. 반대로 p = (int) o; 이렇게 하면 UnBoxing이 일어나구요.

 만약에 값 타입 변수를 개체처럼 사용하고 싶다고 하는데요. 이는 가만히 두고만 봐서는 방법이

 없습니다. 왜? 개체처럼 사용하려면 Stack이 아닌 Heap에 자리를 잡고 앉아 있어야 하거든요.

 그래서 Boxing을 해서 Stack의 값을 Heap영역에 복사를 해놓고 변수는 Heap영역에 복사된

 값을 참조 하게 됩니다.

Boxing이 일어나면 Value-Type의 값을 Heap에 복사를

 하고 Reference-Type인 o는 Heap영역의 값을 참조하게 됩니다. 값이 복사된 것이니까 p의 값

 을 변경해도 o는 변하지 않겠죠? UnBoxing은 이와 반대인데 반드시 UnBoxing은 명시적으로
형 변환을 해줘야 합니다. 그럼 Heap영역에 있는 값이 Value-Type의 변수에 복사가 됩니다.
마지막으로 테스트 예제를 보도록 하겠습니다.

using System;

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><?XML:NAMESPACE PREFIX = O />

public class Class1

{

 

          public static void Main()

          {

 

                    int p = 123;

 

                    object o = p; // Boxing

 

                    try

                    {

                              int j = (short) o; //에러 발생-잘못된 형변환
                              Console.WriteLine("UnBoxing 되었습니다.");
                    }

 

                    catch (InvalidCastException e)

                    {
                              Console.WriteLine("형 변환이 잘못 되었습니다.");
                    }

          }

}

위의 예제처럼 형 변환이 잘못 되면 예외를 발생하게 됩니다. 반드시 명시적으로 Boxing된 데이터에 맞는 형으로 형변환을 해 주어야 합니다.

 


- 클러스터드인덱스와 넌클러스터드인덱스 의 차이

클러스터 인덱스(Clustered Index)

테이블에 있는 데이터가 물리적으로 저장되어야 하는 순서를 나타내며,

B-Tree구조를 가지고 있다(B-Tree 구조는 리프노드(Leaf Node)에 실제

데이터가 존재한다).

테이블에 PK를 생성할 경우 클러스터 인덱스가 없고 PK를 위한 인덱스

가 넌클러스터 인덱스라고 명시적으로 하지 않으면 SQL Server가 알아

서 PK에 클러스트 인덱스를 작성한다.

PK는 Null을 가질수 없으며, Unique는 하나의 Null값을 가질 수 있다.
보통 일치하는 값을 찾는데 PK가 사용되고 그 이외의 컬럼에 범위검색

이 자주 사용된다면 PK에 넌클러스터 인덱스를 사용한다.


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

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


넌클러스터 인덱스(Non-Clustered Index)

B-트리구조의 리프노드(Leaf Node)에는 인덱스 데이터와 행의 정확한

위치를 가리키는 정보 (row-locator)를 갖는데, 클러스터인덱스가 있는

경우에는 그 클러스터인덱스의 키값이 그렇지 않는 경우에는 RowID(파

일ID, 페이지 번호, 페이지 내의 행번호)를 갖는다.


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

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


풀텍스트 인덱스 Full-Text Index


카탈로그와 같은 것으로 MS Search Service 의 일부분이며, 주로 웹 색

엔진등에 사용이 되고 있다.
char, varchar 컬럼에만 생성 가능 / 테이블에 하나만 생성 가능 / B-

트리  인덱스와 달리 자동으로 갱신되지 않는다 / 단어 또는 구

(Phrases)검색 / 단일 단어 또는 단어의 그룹에 대한 검색 / 유사한 단

어 검색

 

- DB용어 요약정리
속성(Attribute)

▪데이터베이스를 구성하는 가장 작은 논리적 단위

▪파일 구조상의 데이터 항목 또는 데이터 필드에 해당됨

▪개체의 특성을 기술함

 

튜플(Tuple)

▪릴레이션을 구성하는 각각의 행

▪속성의 모임으로 구성됨

▪파일 구조에서 레코드와 같은 의미

 

개체(Entity)

▪데이터베이스에 표현하려는 것으로 사람이 생각하는 개념이나 정보단위 같은 현실 세계의 대상체


▪유형, 무형의 정보로서 서로 연관된 몇 개의 속성으로 구성됨

▪파일 시스템의 레코드에 대응하는 것으로 어떤 정보를 제공하는 역할을 수행함

▪독립적으로 존재하거나 그 자체로서도 구별이 가능함

 

관계형 데이터 모델

▪계층 모델과 망 모델의 복잡한 구조를 단순화시킨 모델

▪표(Table)를 이용해서 데이터 상호관계를 정의하는 DB 구조

▪데이터간의 관계를 기본키(primary key)와 이를 참조하는 외래키(foreign key)로 표현함

▪대표적인 언어 : Orcle, MS-SQL, Informix

▪1:1, 1:N, M:N 관계를 자유롭게 표현할 수 있음

▪장점: 간결하고, 보기 편리하고, 다른 데이터베이스로의 변환이 용이함

▪단점: 성능이 다소 떨어짐

Relation(릴레이션)
: 서로 연관된 Table들의 연결된 집합을 말한다.
개체간의 개체 관계와 특정 개체 내의 속성간에 성립하는 속성 관계로 구분.
개체 집합의 구성 원소인 인스턴스 사이의 대응성 즉 매핑으로 볼 수 있음.
둘 또는 그 이상 엔티티 간의 관계.
- Record(레코드)
: 서로 연관된 자료 항목들의 집합으로 구성되어 열의 표현 단위이다.
  예를 들어 학생 Table에서 이름, 학년, 학과, 번호, 주소 등등과 같은 열의 필드명이 있을 경우 홍길동, 3, 전기과, 20, 경남 진주시 등의 정보의 집합을 말 할 수 있다.

- Tuple(튜플)
: 릴레이션을 구성하는 각각의 행(속성)의 모임을 말한다.
  예를 들어 학생 Table에서 이름 필드의 해당하는 김철수, 방영희, 이성진, 홍길동 등등과 같은 행의 집합을 말할 수 있다.

- Attribute(에트리뷰트)
: 테이블의 열(column)을 나타냄
  Table의 필드의 특정 개체(속성)를 나타내는 특징 말한다.
  데이테의 가장 작은 논리적 단위로서, 그 자체 만으로써는 중요한 의미를 가지지 못하며 단독으로 존재하기 어려운 특성을 갖는다.

- Domain(도메인)
: 한 에트리뷰트에 나타날 수 있는 값들의 집합.
  예를 들어 학생 Table에서 이름 필드의 해당하는 등록된 사람들의 이름 목록을 말 할 수 있다.

- Degree(차수)
: 에트리뷰트(속성)의 수.

- Cardinality(카디날리티)
: 두 엔티티간의 관계 매핑이의 수에 따라 최소 카디날리티, 최대 카디날리티로 구분할 수 있다. (대응성)

- Super key(슈퍼키)
: 릴레이션을 구성하는 모든 튜플에 대해 유일성(Unique)은 만족하지만, 최소성(Minimality)은 만족하지 못함.

- Candidate key(후보키)
: 릴레이션을 구성하는 속성들 중에서 튜플들을 유일하게 식별할 수 있는 속성이나 속성의 조합이다. 하나의 키값으로 하나의 튜플만을 식별하는 유일성, 각 튜플을 식별할 때 최소한의 속성만을 필요로 하는 최소성. 유일성, 최소성을 만족하는 속성의 집합

- primary key(기본키)
: 후보키 중에서 선택한 주키(Main key)를 말한다.
  한 릴레이션에서 특성 레코드를 유일하게 구별할 수 있는 속성.
  기본키로 정의된 속성에는 Null값이나 중복값을 입력할 수 없다.

- Alternate Key(대체키)
: 후보키가 둘이 이상일 때 그 중에서 어느 하나를 기본키로 지정하면 기본키를 제외한 나머지 후보키들은 대체키가 된다.

- Foreign Key(외래키)
: 특정 릴레이션의 속성의 다른 릴레이션의 주키(Main key)로 사용될 경우 각 릴레이션간의 개체를 참조하기 위한 경로로 사용.

- Predicate(프레디키트)
: 충분한 argument가 주어지면 참 또는 거짓을 돌려주는 함수.
 Commit
: 저장되지 않은 모든 데이터를 데이터베이스에 저장하고 현재의 트랜잭션을 종료하라는 명령.

- Rollback
: 저장되지 않은 모든 데이터 변경 사항을 취소하고 현재의 트랜잭션을 끝내라는 명령.

6. 무결성의 제약조건에 대하여 설명
: 데이터베이스에 저장된 모든 데이터 값이 정확한 상태로 저장된 것을 의미함.
 - 개체 무결성: 릴레이션에서 기본키를 구성하는 속성값은 널값이나 중복값을 가질 수 없다는 의미다.
 - 참조 무결성: 외래키 값은 Null값 또는 참조 릴레이션에 있는 기본키 값과 동일해야 한다. 즉 릴레이션은 참조할 수 없는 외래키값을 가질 수 없다.

자료(data) : 단순한 관찰이나 측정으로부터 수집된 사실이나 값

정보(Information) : 자료를 처리하여 경제성을 지닌 의미 있는 값

정보시스템 : 데이터를 수집, 저장해 두었다가 필요할 때 처리하여 의사결정에 도움이 되도록 가공한 것

데이터베이스 : 통합 저장된 운영 데이터의 집합체

개체 : 정보를 표현하는 논리적인 단위, 파일 시스템의 레코드에 해당, 속성으로 구성된다.

DBMS : 데이터베이스 관리 시스템(관리 프로그램)

ODBC : 개방형 데이터베이스 접속 규격

DDL 정의 : 필드정의, 테이블의 구조 정의, 데이터베이스 저장에 대한 정의

DML 조작 : 사용자의 요구에 따른 데이터 관리 기능

DCL 제어 : 무결성과, 호환성, 보안등을 유지시키는 기능

스키마 : 데이터베이스 전체 구조에 대한 논리적 정의

외부스키마 : 뷰, 프로그래머나 일반 사용자가 쉽게 접근할 수 있는 논리적 구조

개념스키마 : 기관이 필요로 하는 정보를 생성하기 위한 데이터 개체들에 대한 정의 ...

DBA : 데이터베이스 관리자, 전반적인 운영을 책임지는 사람 또는 집단

일반 사용자 : 프로그램을 작성하지 않고 단말기나 질의어를 통하여 데이터베이스를 사용하는 사람

후보키  : 한테이블에서 유일성과 최소성을 갖는 모든 속성들 예) 사원번호, 주민번호 등

기본키 : 후보키 중에서 개체를 구별하기 위하여 선택된 하나의 특별한 속성

대체키 : 후보키 중에서 기본키를 제외한 모든 키

인덱스(색인) : Index 검색 수를 줄이기 위하여 특정 속성에 지정하는 기능

무결성 : 데이터베이스가 변경되지 않고 정확성을 유지시키는 성질

도메인 무결성 : 입력값을 제한하여 정확한 값이 입력할 수 있게하는 조건

개체 무결성 : 기본키로 지정된 속성은 널값(Null)을 가질 수 없음을 가리키는 조건

참조 무결성 : 테이블은 참조할 수 없는 외래키를 가질 수 없을을 가리키는 제약 조건

정규화 : 삭제이상, 삽입이상, 갱신이상 문제를 해결하기 위하여 테이블을 분해하는 과정

뷰 : 하나의 기본테이블로부터 유도된 가상 테이블

시스템 카달로그 : 시스템 자신이 필요로 하는 개체에 관한 정보를 담고 있는 시스템 데이터베이스

트랜잭션 : 한꺼번에 수행되어야 할 일련의 데이터베이스 연산(작업)

필드 : 속성, ATTRIB, 데이터 테이블에서의 열, 자료 표현의 최소단위

속성의 수 = 차수 = DEGREE

레코드 : 튜플, 하나 이상의 필드로 구성된, 데이터 테이블에서의 행

레코드의 수 = 튜플의 수 = 기수 = CARDINALITY = 카디널리티

도메인 : 하나의 속성이 취할 수 있는 모든 원자값들의 집합

DROP : 테이블, 필드, 인덱스 등의 제거 명령

DELETE : 레코드 삭제 명령

DISTINCT : 중복데이터의 제거

RESTRICT : 참조중이면 저거하지 아니함

CASCADE : 참조중인 데이터까지 한꺼번에 제거함

ORDER BY : 정렬

GROUP BY : 그룹

HAVING : GROUP 문의로 묶였을 때의 조건문

WHERE  : 조건문

파일  : 서로 연관된 레코드의 모임

실시간 시스템 : 자료를 즉시 처리하는 시스템, 은행조회 업무나, 예약업무 등

일괄 처리 시스템 : 한꺼번에 일괄적으로 처리하는 시스템, 월급계산, 세금징수 등

다중 프로그래밍 : 한 시스템에 여러개의 프로그램을 동시 작동시켜 처리하는 시스템

다중 처리 시스템 : 한 시스템에 여러개의 CPU를 장착한 후 처리하는 시스템

시분할 시스템 : 한 서버의 CPU를 여러 사용자가 동시에 공유하는 시스템

듀플렉스 시스템 : 두 대의 컴퓨터중 하나는 정상 처리를 하고, 하나는 예비용으로 준비

듀얼 시스템 : 두 시스템이 완전히 동일한 처리를 동시에 수행하고, 그 결과가 일치하는 경우에만 출력하는 시스템

스택 : 자료의 삽입과 삭제가 한쪽 끝에서만 발생하는 구조

큐 : 자료의 삽입은 한쪽 끝에서, 출력은 다른쪽 끝에서 발생하는 구조, FIFO

데크 : 양쪽에서 삽입과 삭제가 가능

순차파일 : 레코드를 논리적 순서에 따라 물리적으로 연속된 위치에 기록하는 파일 구조

ASCII : 아스키 코드 7비트( BCE 6비트, EBCDIC 8비트)

MERGE : 2개이상의 파일이나 DB를 하나로 통합하는 것

관계형데이터베이스 : 개체 집합에 대한 속성 관계를 표현하기 위해 게체를 테이블로 사용하고 ...


1.        자료(data) –

(1)    데이타는 현실세계로부터 단순한 관찰이나 측정을 통해서 수집한 사실(fact)또는 값(value)들을 말하는 것으로 정리되지 않은 자료를 의미하나 정보는 어떤 기준에 의해 정리 되고 기록된 자료라는 의미로써 구별된다.

(2)    의미가 부여된 어떤 표현. 예를 들면, 문자나 숫자 또는 이의 조합으로 이루어진 기호 등의 컴퓨터가 처리하는 값. 즉 입력된 값, 중간 계산 결과, 최종 처리 결과를 명령어나 제어 신호와 구분해서 데이타라 하기도하고, 명령어까지 포함하여 넓은 의미의 데이타라 부르기도 함.

2.        데이타베이스(database) –

(1)    하나이상의 응용 분야에서 사용될 수 있도록 중복이 제어된 상태로 저장된 상호 관련 데이타의 집합; 데이자는 그 데이타를 사용하는 프로그램과는 독립적이 되도록 저장된다. 새로운 데이타를 첨가하거나 데이타베이스 내의 데이타를 수정,검색할 때에는 통일된 방법을 이 용한다. 데이타베이스들의 구조가 서로 상이할 경우에 시스템은 데이타베이스들의 집합으로 구성된다.

(2)    CODASYL의 정의 : 데이타베이스는 특정 스키마에 의해 제어되는 모든 레코드 어커런스, 세트 어커런스및 기억영영으로 구성된다. 다수의 데이타베이스가 구성되어 있으면 각 데이타베이스에 대한 독자적인 스키마가 있어야 한다. 또한 서로 다른 데이타베이스의 내용도 서로 상이하다고 가정한다.

3.        일관성(consistency)- 데이타베이스과 여러 사용자의 한 질의에 대하여 모순되지 않는 똑같은 결과를 제공할 수 있는 데이타베이스의 성질. 갱신 작섭을 진행할 때 일관성을 유지하기 위해서 모든 데이타 사본이 변경될 때까지 그 데이타에 대한 판독 연산은 제한된다.

4.        데이타베이스 관리시스템(DBMS) - DBMS는 응용 프로그램의 데이타에 대한 모든 처리를 위해 데이타베이스를 관리하는 소프트웨어 시스템으로서 데이타의 조직,처리,제어를 위한 일련의 프로그램 및 데이타 구조를 말한 다.

5.        저장매체(storage) - 중앙처리장치, 입출력 장치와 함께 하드웨어 구성의 중요한 요소이다. 처리하고자 하는 자료와 필요한 프로그램을 기억장치에 기억시켜주고 중앙 처리 장치에 의해 호출되어 처리되므로 기억 용량과 호출 시간이 기억 장치의 중요한 성능 평가 기준이 된다. 그래서 호출 시간에 중점을 둔 것이 주기억 장치이고, 기억용량에 중점을 둔것이 보조 기억 장치이다.

6.        레코드(record) - 서로 연관된 자료 항목들의 집합으로 구성되어 화일의 기본 원소가 되는 자료 저장이나 표현의 기본 단위. 예를 들어 학생의 이름과 성명은 한 학생의 레코드를 구성하고 여러학생의 레코드가 모여 화일을 구성한다. 응용 프로그램에서 사용자가 정의한 레코드를 논리적 레코드라고 하고 실제 저장매체에 입출력될때의 기본 단위는 물리적 레코드라고 한다.

7.        화일(file) - 컴퓨터 보조 장치내에 저장되어 있는 하나의 단위로서 연관된 레코드의 집합. 정보처리 목적 상 하나의 단위로 취급하는 관련 데이타 기록의 집합.

8.        인덱스(index) - 화일 기억장소 내에 위치한 레코드들의 주소를 가진 컴퓨터 워드나 필드들의 표.

9.        바이트(byte) - 컴퓨터에서 하나의 문자나 숫자등의 자료를 나타낼 수 있는 연속적인 2진 숫자들의 집단으로 8개 비트의 연속을 말함.

10.     해싱(hashing) - 키값을 난수로 변환하여 필요한 주소를 산출하는 하나의 직접 주소법.

11.     트리(tree) - 공집합이 아닌 유한한 노드들의 집합으로서 한 노드를 루트노드라고 하고 나머지 노드들은 m>=0의 부분집합으로 구성되고, 각각이 다시 트리를 구성하는 자료 구조. 루트노드는 선행자가 없으로 루트 이외의 다른 모든 노드는 오직 하나의 선행자를 가진다.

12.     데이타 모델링(data modeling) - 개념 적인 세계는 컴퓨터가 이해하고 처리할 수 있는 물리적 저장 장치에 데이타를 수록 저장할 수 있도록 변환 하여야 한다. 그러기 위래서는 먼저 정보 구조에서 DBMS가 지원하는 어떤 데이타 모델, 즉 논리적 데이타 구조로 변환 시켜야 하는데 이과정을 데이타 모델링이라고 함.

13.     개체, 객체(entity) - 데이타베이스가 표현하려고 하는 유형, 무형의 정보 객체로서 서로 연관된 몇개의 attribute들로 구성된다. entity는 사람이 생각하는 개념적인 단위 또는 정보의 세계에서 정보단위로서 의미를 가진다.

14.     속성(attribute) - 데이타의 가장 작은 논리적 단위로서, 그 자체 만으로써는 중요한 의미를 가지지 못하며 단 독으로 존재하기 어려운 특성을 갖는다. 일반적으로 엔티티에 대한 식별자로서 entity에 대한 서술적 정보.

15.     개체-관계 다이어그램(entity-relation diagram) - entity-relation 자료 모델에서 직사각형으로 entity set을 타원으로 attribute를 나타내고, 선으로 entity set과 그 attribute를 연결하고, 마름모로 relation set을 표현하고, 화살표로 relation set의 사상형태를 표현한 도면.

16.     키(key) - 항목의 구별이나 그 위치를 찾기위해 이용되는 영역을 형성하는 문자의 모임.

17.     관계(relation) - entity-relation 데이타 모델에서 entity 사이의 관계를 나타냄.

18.     관계형 데이타베이스(relational database) - relation 들로 구성된 database. relational database의 데이타베이스 관리 시스템은 데이타 원소들을 재결합 시켜 새로운 rlation 들로 만들 수 있으며, 이로 인해 데이타의 이용에 많은 다양성이 있다.

19.     표(table) - 하나이상의 인수들에 의해 애매모호하지 않게 관련지어진 각 항목이나 자료 배열. 레이블이나 다른 항목과 관련된 위치 또는 그 외의 다른 방법에 의해 유일하게 지정된 항목에서의 자료의 집합.

20.     스키마(schema) - 논리적 데이타베이스의 구조를 전체적으로 명시한 것 스키마 기술 언어인 DDL의 엔트리들로 구성되며 데이타베이스 내에 존재하게 되는 모든 구역, 세트 어커런스, 레코드 어커런스 및 연관된 데이타항목과 데이타 집합체들을 완전히 기술한 것

21.     SQL - Structured Query Language의 약어. SELECT FROM WHERE- 구조로 특징지울 수 있는 관계 사상을 기초로 한 대표적 언어로서 입력 relation으로부터 원하는 출력 relation을 사상시키는 언어. IBM에서 처음에는 SEQUEL이란 이름으로 개발되었으나, 현재는 SQL로 널리 알려지게 되었다. SQL은 데이타 정의, 데이타 조작, 데이타 제어 기능에 대한 명령을 모두 포함하고 있다.

22.     관계 대수(relation algebra) - relation에 대한 연산들의 집합. 각 연산은 하나 또는 그 이상의 relation을 피연산자로 취하여 하나의 relation을 결과로 생성한다. 일반적인 집합 연산과 특별 관계 연산들인 SELECTION(선택), PROJECTION, JOIN, DIVISION연산등이 있다.

23.     질의어(Query Language) - 특수한 응용 프로그램의 도움없이 데이타베이스를 접근할 수 있도록 하는 언어. 사용자를 위한 고수준의 언어로서 주로 온라인에서 대화형으로 사용된다. 전문적 프로그래머가 아닌 사용자가 데이타베이스를 사용할 수 있도록 한 언어로서 비절차적이며, 독립적으로자체적인 질의를 할 수 있는 언어.

24.     관계 완전성(relational completeness) - 질의어의 표현력을 나타내 주는 척도로서 어떤 질의어가 관계 해석으로 표현되는 모든 질의들을 표현할 수 있으면 관계 완전성을 갖는다고 말한다. 데이타의 논리적 구조가 관계(테이블 형태의 평면 화일)로 표현될 수 있는 데이타베이스로서 각 관계는 몇 개의 속성으로 구성된다.

25.     primary key - file에서 한 record를 유일하게 식별할 수 있는 필드 또는 필드의 집합.

26.     functional dependency - 한 relation에서 어느 attribute에 대한 값이 다른 attribute이 갖는 각 값에 대하여 오직 한 개만 관련되는 것을 나타내는 성질.

27.     soundness - 어떤 wff들의 집합에서 유도될 수 있는 임의의 이론이 그 wff들의 집합으로부터 논리적으로 따를 때, 이 규칙을 sound하다고 한다.

28.     completeness - 어떤 wff의 집합에서 함축될 수 있는 모든 이론을 집합으로부터 유도 할수있는 공식이 존재할 때, 이를 complete하다고 한다.

29.     개체-관계 데이타 모델(entity-relationship data model) - 개체를 나타내는 entity와 이들 객체간의 연관성을 나타내는 관계의 집합으로 실세계를 표현하는 자료 모델.

30.     domain integrity rule - 무결성 규칙의 한 종류로서 주어진 attribute값이 데이타베이스에 있는 다른 값들과 무관하게 그 자체로서 허용될 수 있는가를 규정하는 것으로 삽입이나 갱신 연산에 적용될 수 있다.

31.     referential integrity - 한 relation이 다른 relation의 기본 키와 동일한 domain상에 정의된 attribute를 가질 때 이 attribute의 값은 null이거나, 이 attribte를 기본 키로 가지는 relation내에 존재하는 값이어야 한다는 조건.

32.     cascade deletion - 한 relation이나 record type에 속하는 record를 삭제함으로써다른 정보의 연속적 삭제가 일어나는 현상.

33.     data definition language - 응용 프로그램과 데이타베이스 관리 시스템 간에 데이타 요구를 표현 할수 있는 interface를 기술하기 위한 언어로서 데이타베이스를 생성하는 목적으로 사용하는 언어.

34.     decomposition - 한 relation scheme을 함수적 종속성 또는 다치 종속성 등을 근거로 두개 이상의 작은 relation scheme으로 나누는 작업. 이 작은 relation scheme들은 원래 relation scheme들의 부분집합이며, 그것이 갖는 정보가 손실되지 않도록 유지해야함.

35.     candidate key - relation 의 tuple들을 유일하게 구별할 수 있는 최소한의 attribute들의 집합으로모든 relation은 적어도 하나의 candidate key를 갖는다.

36.     cache - 저용량, 고속의 기억 장치. 저가격, 저속, 고용량의 기억장치와 혼합되어 사용됨으로써 고속, 대용량 기억 장치의 효과를 얻을 수 있다. 프로그램 수행 과정에서 고속 기억장치로 올바른 정 로를 적재하고, 다시 이를 제거하는 look-ahead 과정이 필요하다. block단위의 기억으로 중앙 처리 장치와 주기억 장치간의 교류 횟수또한 줄여주게 된다.

37.     fragmentation - 기억 장치의 가용 공간이 많은 작은 구역으로 나뉘어져 쓸모 없게 되어 밀집화가 필요한 상태.

38.     atomicity - transaction이 가져야할 성질들 중의 하나로서, 시스템의 어떤 상황하에서도 한 ransaction의 연산들이 모두 완료되거나 아니면 전혀 실행되지 않아야 한다. 즉, 한 transaction에 대한 모든 연산들의 결과가 데이타베이스에 모두 반영되든가 아니면 전혀 반영되지 않아야 함을 말함.

39.     concurrency - 두개 이상의 process들이 다른 process의 수행과 서로 독립적으로 동시에 수행될 수 있는 성질.

40.     isolation - transaction이 보유하여야 할 성질들 중의 하나로서 transaction이 완료되기 전에는 그 실행 결과를 다른 transaction이 이용할 수 없게 하는 것이다.

41.     durability - transaction 이 일단 완료되면 이후에 어떤 형태의 시스템 고장이 발생하더라도 그 transactino의 결과를 잃어버리지 않음.

42.     secondary index - 기본 키 이외의 보조 키에 구성되어진 인덱스

43.     lossless decomposition - relation 의 분해된 projection들을 자연 조인시킴으로써 아 무런 정보의 손실없이 원래의 relation을 복구시킬 수 있는 것을 말한다.

44.     null value - relation의 한 attribute가 가질 수 있는 특별한 원자 값으로 "미정임", "알 수 없음", 또는 "해당없음"과 같은 뜻을 가진다.

45.     triggers - 데이타베이스가 미리 정해 놓은 조건을 만족하거나 또는 어떤 동작이 수행되면, 자동적으로 수행되는 동작.trigger는 데이타베이스에서 데이타에 대한 유효성조건과 무결성 조건을 기술하는데 유용하다.

46.     network model - 데이타베이스의 논리적 구조를 표현하는 자료구조도가 tree라는 제약을 받지 않고 방향 그래프의 성질을 갖는 형태를 말한다. 그래프의 각 노드는 레코드 형을 나타내셔, 노드간을 연결하는 연결선은 entity관계를 나타낸다. arc의 머리 부분에 위치하는 record형을 memer record라 하고, 몸부분에 위치하는 record형을 owner record라 하는데, owner record와 member record간에는1:n의 관계를 갖는다.

47.     hierarchical model - 데이타베이스의 논리적 구조가 계층 성질을 갖는 tree 형태의 자료 구조도로 표현되는 것을 말함. 노드는 record type(entity set)을 나타내고, link는 두record type간의 entity관계를 나타냄.

48.     data redundancy - 하나의 자료가 여러개의 화일에 나타나는 것. 화일처리 시스템에서는 자료의 중복이 많으나, 데이타베이스 시스템에서는 중복을 최소로 할 수 있다.

49.     query - 데이타베이스로부터 특정 데이타의 검색을 요구하는 내용을 서술한것.

50.     clustering - 검색 효율을 개선하기 위해 서로 관련있는 record들을 물리적으로 인접한 장소에 위치 시키는 기법. 논리적 clustering은 항목들을 같은 record내에 배치하며, 물리적 clustering은 같은 또는 다른 record type들을 block, 구역, 또는 저장기기내에 배치한다.

1. Relationship(관계) / Join
-> Relationship은 뭔지 잘 모르겠구요. Join은 만약 A라는 테이블과 B라는 테이블이 있을시 이 두 테이블의 관계키를 중심으로 새로운 테이블을 만들어 내는 것이 Join입니다. 다시말해서 두테이블을 합쳐서 새로운 한개의 레코드셋을 만들어주는거죠.

2. Stored procedure(저장프로시저)
->sql 문을 컴파일 시켜놓고 필요할때마다 불러쓸 수 있는 일종의 함수라고 생각하시면됩니다.

3. field (column)
-> 테이블에서 각각의 Head라고 볼 수 있습니다.

4. Record (Row)
->각각의 필드에 해당하는 데이타들이라고 볼 수 있습니다.

5. ODBC
-> Open DataBase Connectivity 로서 사용자나 프로그램이 데이타 베이스에 연결하여 필요한 기능을 할 수 있도록 해주는 인터페이스 입니다.

6. OLE DB
-> ODBC와 같이 사용자가 데이타 베이스에 연결하여 필요한 기능을 할 수 있도록 해주는 인터페이스이지만 확장성이 ODBC보다 월등히 뛰어나며, ODBC의 보다 강력한것으로 알려져 있습니다.


ER 모델 (Entity Relationship Model) ; 대표적인 개념적 데이터 모델로서 개체, 속성, 관계 등에 대하여 용이하게 표현할 수 있는 ER 도형을 정의한다.

 

 

정규화(Normalization) ; 다양한 유형의 검사를 통해 데이터 모델을 좀더 구조화하고 개선시켜 나가는 과정이다.


기본키(Primary Key)

개체 타입에서 개체를 유일하게 식별해 주는 속성 또는 속성 집합

 

 

개체(Entity)

현실 세계의 객체로서 유형 또는 무형의 정보 대상으로 존재하며 서로 구별될 수 있는 것을 뜻한다.


속성(Attribute)

개체의 특성이나 상태를 기술한 것으로서 릴레이션의 열을 말한다.


튜플(Tuple)

릴레이션의 행을 말한다.


도메인(Domain)

속성이 가질수 있는 모든 가능한 값들의 집합


릴레이션(Relation)

관계형 데이터 모델에서 데이터를 원자 값으로 갖는 이차원의 테이블로 표현한 것이다.


릴레이션스키마(Relational Schema)

릴레이션에 데이터를 넣을 수 있도록 하는 릴레이션 틀이다.


릴레이션인스턴스

어느 시점의 릴레이션에 들어 있는 튜플들의 집합이다.


키(Key)

데이터베이스에서 조건에 만족하는 튜플을 찾거나 순서대로 정렬할때 기준이 되는 속성


외래키(Foreign Key)

다른 릴레이션의 기본키를 참조하는 속성 또는 속성들의 집합이다.


슈퍼키(Super Key)

한 릴레이션 내에 있는 속성들의 집합으로 구성된 키를 말한다.


후보키(Candidate Key)

릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용되는 속성들의 부분 집합이다.


대체키(Alternate Key)

후보키 중에서 선정된 기본키를 제외한 나머지의 후보키를 의미한다.


무결성(Integrity)

데이터베이스에 저장된 데이터 값과 그것이 표현하는 현실 세계의 실제값이 일치하는 정확성을 의미한다.


무결성제약조건(Integrity Constraint)

데이터베이스에 저장된 데이터의 정확성을 보장하기 위해 정확하지 않는 데이터가 데이터베이스에 저장되는 것을방지하기 위한 제약 조건을 말한다.


널(NULL)

모르는 값 또는 적용할 수 없는 값을 의미


도메인 무결성(Domain Integrity)

특정 속성의 값이 그 속성이 정의된 도메인에 속한 값이어야 한다는 규정이다.


참조 무결성(Referential Integrity)

외래키 값은 NULL이거나 참조 릴레이션의 기본키 값과 동일해야 한다는 규정이다.


개체 무결성(Entity Integrity)

기본 릴레이션의 기본키를 구성하는 어떤 속성도 NULL일 수 없다는 규정이다.

 


 

데이터베이스정의어(DDL,Database Definition Language)

스키마, 도메인, 테이블, 뷰, 인덱스를 정의하거나 변경 또는 제거할 때 사용하는 언어


메타데이터(Metadata)

데이터 관리를 위한 데이터에 대한 데이터를 의미한다.


CREATE TABLE

테이블을 정의하는 명령문이다.


뷰(View)

하나 이상의 테이블로부터 유도되는 이름을 갖는 가상 테이블을 말한다.


ALTER TABLE

테이블에 대한 정의를 변경하는 명령문이다.


DROP

스키마, 도메인, 테이블, 뷰, 인덱스를 제거하는 명령문이다.


시스템 카탈로그(System Catalog)

시스템 그 자체에 관련이 있는 다양한 객체들에 관한 정보를 포함하는 시스템 데이터베이스 테이블이다.


SQL(Structured Query Language)

표준 관계형 데이터베이스 언어이며,관계 대수와 관계 해석을 기초로 한 혼합 데이터 언어


CASECADE 법칙

참조 무결성 제약 조건이 설정된 기본 테이블의 어떤 데이터를 삭제하는 경우, 그 데이터와 관계를 맺고 있는 연관되어 있는 다른 테이블의 데이터들도 도미노처럼 연쇄적으로 삭제되는 것을 말한다.


인덱스(Index)

검색을 빠르게 하기 위해 만든 보조적인 데이터 구조이다.


SELECT 문(SELECT Statement)

테이블을 구성하는 튜플들 중에서 전체 또는 조건을 만족하는 튜플을 검색하여 주 기억장치에 임시 테이블로 구성하는 명령문이다.


조인(JOIN)

두 개의 릴레이션에 대해 연관된 튜플들을 결합하여,하나의 새로운 릴레이션을 반환


데이터베이스 조작어(DML, Data Manipulation Language)

데이터베이스 사용자가 응용 프로그램이나 질의어를 통하여 저장된 데이터를 실질적으로 관리하는데 사용되는 언어이다.


INSERT 문(INSERT Statement)

테이블에 새로운 튜플을 삽입할 때 사용하는 명령문이다.


DELETE 문(DELETE Statement)

테이블에 있는 튜플들 중에서 특정 튜플을 삭제할 때 사용하는 명령문


UPDATE 문(UPDATE Statement)

테이블에 있는 튜플들 중에서 특정 튜플의 내용을 갱신할 때 사용하는 명령문이다.


데이터베이스 통제어(DCL, Data Control Language)

데이터의 보안, 무결성, 회복, 병행 제어 등을 정의하는데 사용되는 언어


커밋(COMMIT)

트랜잭션의 모든 변경 내용들을 영구적으로 데이터베이스에 반영하는 명령어이다.


트랜잭션(Transaction)

데이터베이스 관리 시스템에서 회복 및 병행제어 시에 처리되는 작업의 논리적 단위이다.


롤백(ROLLBACK)

변경된 모든 내용들을 취소하고 데이터베이스를 이전 상태로되돌리는 명령어이다.


GRANT

데이터베이스 관리자가 데이터베이스 사용자에게 권한을 부여하기 위한 명령어이다.

 


 

REVOKE

데이터베이스 관리자가 데이터베이스 사용자에게 권한을 취소하기 위한 명령어이다.


내장 SQL(Embeded SQL)

데이터베이스 내의 데이터를 정의하거나 접근하는 SQL 문을 응용 프로그램 내에 내포하여 프로그램이 실행 될 때함께 실행되도록 호스트 프로그램 언어에 삽입된 SQL이다.


호스트프로그램 언어

PASCAL, COBOL, C, Visual Basic 같은 프로그래밍 언어를 말한다.


커서(Cursor)

내장 SQL 문의 실행 결과로 반환된 복수 개의 튜플들을 접근할 수 있도록 해주는 개념


프로시저(Procedure)

특정한 작업을 수행하는 SQL 문과 PL/SQL 문을 논리적으로 그룹화한 것을 말한다.


스토어드프로지서

(Stored Procedure)

연속된 SQL 문들을 하나로 모아 SQL 서버에 미리 컴파일해서 저장해 놓은 것


이상(Anomaly)

테이블에서 일부 속성들의 종속으로 인해 데이터의 중복이 발생하고 이 중복으로 인해 테이블 조작 시 문제가 발생하는 현상


삽입 이상(Insertion Anomaly)

테이블에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들로 인해 삽입할 수 없게 되는 현상


삭제 이상(Deletion Anomaly)

테이블에서 한 튜플을 삭제할 때 의도와는 상관없는 값들도 함께 삭제되는,즉 연쇄 삭제

 가 발생하는 현상


갱신 이상(Update Anomaly)

테이블에서 튜플에 있는 속성값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 불일치성이 생기는 현상


제1정규형(1NF)

테이블R에 속한 모든 속성의 도메인이 원자값 만으로 되어 있는 정규형


데이터베이스(Database)

여러 사람에 의해 공유되어 사용될 목적으로 통합 관리되는 정보의 집합


계층형데이터베이스

(Hierarchical Database)

계층적 메뉴를 통하여 데이터베이스의 자료를 이용하도록 구성된 데이터베이스 시스템


망형데이터베이스 (Network Database)

망 데이터형을 사용하여 대량의 자료를 저장하고 있는 데이터베이스


관계형데이터베이스(Relational Database)

관계들로 구성된 데이터베이스이다.


객체지향형데이터베이스(Object-Oriented Database)

세상에 존재하는 모든 정보를 객체 지향 프로그래밍(OOP) 기술을 도입하여 저장한 데이터베이스이다.


데이터베이스 관리 시스템(DBMS, Database Management System)

데이터베이스에서 데이터 조작,저장, 검색, 보안 및 통합을 제어하는 프로그램이다.

허이구...ㅠ_ㅠ

 

반응형

댓글