MyAlbum   Pet
DirectX   openGL   Java   C/C++   STL   C#   Python   Window   ActiveX   SE & Refactoring   Game   Unicode   googleDesktop   Network   Database   Web   php   asp   asp.net   Library   QT   wxWidget   Something to read  
ToDo
zelon's WebAlbum
Google Tools
Google Naver map
ToRearrange
OpenOffice.org
Eclipse
Check W3 validator
Database Programming
e i R f
Anonymous

Contents

1 목차
2 unique 를 만들 때, 이미 중복된 내용을 가진 컬럼 가져오기
3 데이터베이스의 tables, sp 내용 가져오기
4 odbc 설정하기
5 odbc 없이 접속하기
6 SQLite
7 ADO 접속 문자열
8 About Key
9 Data Normalize 의 활용
10 index
11 join
12 where 과 having 의 차이점
13 공개 DB 에는 어떤 것들이 있나요
14 MSSQL 에서 Mysql 로 DB 이동하기
15 클라이언트의 DB 접근 기술의 비교
16 기타
16.1 다른 테이터베이스의 테이블에 접근하기

1 목차 #

http://database.sarang.net

http://www.microsoft.com/korea/sql/techinfo/administration/2000/default.asp

2 unique 를 만들 때, 이미 중복된 내용을 가진 컬럼 가져오기 #

select stor_id, count(*)
from sales
group by stor_id
having count(*) > 1

- from Microsoft 전문가로 가는 지름길(1) SQL Server2000 정원혁 311p

3 데이터베이스의 tables, sp 내용 가져오기 #


  • Microsoft SQLDMO Object Library COM object 를 이용하면 가능하다.

4 odbc 설정하기 #


5 odbc 없이 접속하기 #

char sCnt[200] = {0};

pConnect.CreateInstance(__uuidof(Connection));

sprintf(sCnt, "Provider=SQLOLEDB.1;" "Persist Security Info=True;" "User ID=%s;" "Password=%s;" "Initial Catalog=%s;" "Data Source=%s",
pUser, pPWD, pDB, pSvr);

_bstr_t strCnn(sCnt);
pConnect->ConnectionString = strCnn;
pConnect->PutConnectionTimeout(30);
pConnect->PutCommandTimeout(300);
pConnect->Open("", "", "", NULL);

6 SQLite #


7 ADO 접속 문자열 #


DNS 를 이용할 경우 odbc 설정을 해줘야하지만, 다음과 같이 connectionstring 을 통해 바로 접근할 수도 있다.

conn->Open("Provider=SQLOLEDB;Persist Security Info=False; Data Source=db.server.com; Initial Catalog=dbtest;
 User ID=userid; Password=password;", "userid", "password", ADODB::adConnectUnspecified);


8 About Key #


  • Candidate key : 키란 테이블 내의 특정 레코드를 나타내는 필드로 구성되는 것으로서 이러한 키를 일반적으로는 Candidate Key 라고 부른다. 이러한 캔디데이트키는 테이블의 특정 로우를 찾아내는 데 사용되는데, 만일 특정 테이블이 여러 개으ㅢ 캔디데이트키를 가지고 있을 경우에 이 중 한 개의 키를 Primary Key 로 반드시 지정해 주어야 한다. 만일 Candidate Key 가 한 개만 존재하는 경우라면 해당 캔디데이트키는 디폴트로 프라이머리키가 된다. Primary Key 가 없는 테이블은 갱신이 불가능해지게 된다. Primary Key 는 다음과 같은 두 가지 조건을 만족시켜야한다.
    • Primary can't be null.
    • Primary can't be duplicate.

  • Foreign Key : 다른 테이블에 존재하는 프라이머리키를 의미. 즉, 키값이 일치하는 다른 테이블의 프라이머리키나 캔디데이트 키를 뜻하는 용어.

  • Alternate Key : 여러 개의 candidate key 가 존재할 때 Primary Key 로 지정된 키를 제외한 나머지 Candidate Key 를 Alternate Key 라고 부른다. 한 개의 키만 존재하는 테이블에서는 해당 키가 자동적으로 Primary Key 가 되므로 Alternate Key 는 존재하지 않게 된다.

  • Surrogate Key : 현실 세계에서는 실제로 존재하지 않는 추상 개념을 키로 사용하는 경우를 말하는 것으로, 이러한 키는 DB 조작을 좀더 유연하게 할 수 있도록 해준다. 흔히 쓰는 m_index 같은 컬럼이다.
    • Surrogate Key 는 보통 다음과 같은 두 가지 목적을 위해서 만들어진다.
      • Primary Key 가 NULL 값을 갖게 되는 경우가 있는데, 이를 막기 위한 목적에 사용죌 수 있다.
      • Surrogate Key 를 사용하면 좀더 효율적으로 table 을 join 시킬 수 있다.

  • Intelligent Key : Date 필드와 같이 현실 세계에서 직접적인 의미를 갖는 필드가 키로 사용되는 경우를 말한다.


9 Data Normalize 의 활용 #


이상적으로는 DKNF 상태로까지 데이터베이스를 normalize 해야 하겠지만, 실제로는 쿼리 작업의 속도 및 데이터의 갱신 속도등을 잘 저울질하여 적당한 선에서 데이터베이스 노멀화를 끝내게 된다.

normalize 의 가장 중요한 이점은 데이터베이스의 변경이 매우 손쉽게 된다는 점ㅇ데서 찾을 수 있을 것이다. 하지만, 그 결과로 쿼리 작업의 속도가 떨어진다는 불편을 감수해야하는 것도 사실이다. 실제 데이터베이스를 사용하는 환경에서 쿼리 작업은 테입즐의 조인에 바탕을 두고 이루어지며, 이러한 조인 과정에 많은 시간이 소요될 수 있기 때문이다. 특히, 테이블이 세분화되고, 이들을 조인하기 위한 작업이 복잡할 경우에는 더욱 더 많은 시간이 소요된다. 결국, 복잡한 조인이 필요하게끔 데이터베이스가 설계되어 있을 경우에는 normalize 한 테이블을 조인의 복잡성을 피하는 방향에서 수정하게 되는데, 이를 denormalization 이라고 부른다. 따라서, 이러한 쿼리 작업의 속도와 데이터 갱신의 편리성 등을 잘 저울질하여 데이터베이스를 설계해야 할 것이다.

결론적으로 말해서, 데이터베이스를 설계할 경우에는 먼저 3NF 상태로까지 테이블을 normalize 한 후에 쿼리 작업의 복잡성 등을 고려하여 denormalization 을 해주게 된다.


10 index #


  • Index : 인덱스는 검색을 빠르게 해주는 대신에 데이터 업데이트의 속도를 느리게 해준다는 단점을 가지고 있다. 따라서, 검색을 주로 하는 데이터베이스의 경우에는 많은 수의 인덱스를 만들어 주는 것이 좋고, 그 반대의 경우에는 반드시 필요한 인덱스만을 작성해서 활용하는 것이 좋다. indexing 에 있어서 가장 중요한 것은 index target field 를 선정하는 것이다. 물론, 검색 대상이 되는 필드에 대한 인덱스를 만드는 것이 가장 좋지만, 보통 다음과 같은 필드에 대한 인덱스 작성을 고려해 보는 것도 좋을 것이다.

    • Primary Key
    • Foreign Key
    • field that used at join
    • 데이터가 정렬되어야 할 필드
    • 검색 대상이 되는 필드

  • Clustered : 클러스트된 인덱스가 되지 않은 인덱스보다 검색시 효율이 높다.

11 join #

  • inner join : 둘이 일치하는 값이 있는 row 들만 출력해준다.
  • outer join : left, right 가 있으며 각 left, right table 의 내용을 join 할 table 이 있든 없든(NULL) 항상 출력해준다.
  • cross join : 두 개의 테이블 row 의 모든 조합을 출력해준다.
  • full outer join : cross join 이 각 row 의 조합을 보여주는 반면에, full outer join 은 각 컬럼을 중복되지 않게 한 번만 출력해 준다는 점에서 차이를 보인다.


12 where 과 having 의 차이점 #


where 는 데이터가 그룹화되거나 aggregate 되기 이전에 필터를 적용하고자 할 때 사용되는 반면, having 은 그룹화나 aggregation 이후에 필터를 적용한다.




13 공개 DB 에는 어떤 것들이 있나요 #


http://bbs.kldp.org/viewtopic.php?t=33759


14 MSSQL 에서 Mysql 로 DB 이동하기 #

MSSQL 에서 MySQL 로 이동하기

15 클라이언트의 DB 접근 기술의 비교 #


+ : Strength

++: Special Strenth

- : weakness


기술ODBCMFC ODBCDAORDOOLE DBADO
Object Model-++++++
Nonrelationl data source----++
Low-Level Control+ --+
Performance+ - ++
Code-to-functionality ratio- + -+

  • Object model indicates whether the technology provides an object model that lends itself to object-oriented
programming.
  • Nonrelational data sources refers to the technology's capability to access data stored in nonrelational data stores. (All these technologies provide access to relational databases, so relational database access isn't shown.)

    • Low-level control refers to the amount of database configurability and low-level control the technology provides
    for working with relational database servers.

    • Performance refers to the amount of execution overhead the technology imposes when accessing relational
    database servers.

    • Code-to-functionality ratio refers to how much code you have to write compared to the database functionality you gain from that code.


    Of all these technologies, OLE DB and ADO have the most promising future. These two technologies are where Microsoft is doing its development work. The other technologies are not being discontinued, per se, but will not be further updated by Microsoft. OLE DB offers unparalleled power and flexibility for client database programming. However, as you can see from Table 10.1, OLE DB is a low-level interface and requires more code than a high-level interface such as ADO. ADO offers a flexible yet simple object model with decent performance. This makes ADO the best way to start doing database client development. Next, you will explore ADO and learn how to discover details about its functions.


    16 기타 #


    16.1 다른 테이터베이스의 테이블에 접근하기 #

    
    insert into ForStressTest.dbo.tblCyberMoney (XXX,XXX) values( xxx, xxx);
    
    


    Replace original file
    Rename if it already exist