{{위키데이터 속성 추적}}
'''관계형 데이터베이스'''(關係形 Database, {{lang|en|Relational Database}}, {{문화어|관계자료기지, 관계형자료기지}}, '''RDB''')는 키(key)와 값(value)들의 간단한 관계를 테이블화 시킨 매우 간단한 원칙의 전산정보 [[데이터베이스]]이다. 1970년 [[에드거 F. 커드]]가 제안한 데이터 [[관계형 모델]]에 기초하는 디지털 [[데이터베이스]]이다.<ref name=codd>{{저널 인용|last=Codd|first=E.F.|year=1970|제목=A Relational Model of Data for Large Shared Data Banks|url=|journal=[[Communications of the ACM]]|volume=13|issue=6|pages=377–387|doi=10.1145/362384.362685}}</ref>

== 관계형 모델 ==
{{본문|관계형 모델}}
이 모델은 데이터를 컬럼(column)과 로우(row)를 이루는 하나 이상의 테이블(또는 관계)로 정리하며, 고유 키(Primary key)가 각 로우를 식별한다. 로우는 레코드나 [[튜플]]로 부른다.<ref>{{웹 인용|url=https://docs.oracle.com/javase/tutorial/jdbc/overview/database.html|제목=A Relational Database Overview|work=oracle.com}}</ref> 일반적으로 각 테이블/관계는 하나의 엔티티 타입(고객이나 제품과 같은)을 대표한다. 로우는 그 엔티티 종류의 인스턴스(예: "Lee" 등)를 대표하며 컬럼은 그 인스턴스의 속성이 되는 값들(예: 주소나 가격)을 대표한다.

== 키 (Key) ==
테이블의 각 로우에는 저만의 고유 키(key)가 있다. 한 테이블 안의 로우는 다른 테이블들의 로우로 연결이 가능한데, 이는 연결된 로우의 고유 키를 위한 컬럼을 추가함으로써 이루어진다. (이러한 컬럼들은 외래 키로 부른다)
=== 관계 (Relationships) ===
관계는 테이블 간에 둘 다 존재한다. 이 관계들은 일대일, 일대다, 다대다, 이렇게 세 가지 형태로 이루어진다. 대부분의 관계형 데이터베이스들은 각 로우의 각 컬럼이 하나의 값만을 보유할 수 있도록 설계되어 있다. (값은 원자적이다)

== 트랜잭션 (Transaction) ==
데이터베이스 관리 시스템(DBMS)이 효율적이고 정확하게 운용되기 위해서는 [[ACID]] 트랜잭션을 갖추고 있어야 한다.<ref>{{웹 인용
|url=http://www.microsoft.com/presspass/features/1998/11-23gray.mspx
|제목=Gray to be Honored With A. M. Turing Award This Spring
|date=1998-11-23
|accessdate=2009-01-16
|publisher=Microsoft PressPass
|archiveurl=https://web.archive.org/web/20090206084720/http://www.microsoft.com/presspass/features/1998/11-23gray.mspx
|archivedate=2009-02-06
|url-status=live
}}</ref><ref>{{콘퍼런스 인용 | first = Jim | last = Gray | authorlink = Jim Gray (computer scientist) | title = The Transaction Concept: Virtues and Limitations | booktitle = Proceedings of the 7th International Conference on Very Large Databases | pages = 144–154 | publisher = [[Tandem Computers]] | date = September 1981 | location = 19333 Vallco Parkway, Cupertino CA 95014 | url = http://research.microsoft.com/~gray/papers/theTransactionConcept.pdf |format=PDF| accessdate = 2006-11-09 }}</ref><ref>Gray, Jim, and Reuter, Andreas, ''Distributed Transaction Processing: Concepts and Techniques''. [[Morgan Kaufmann]], 1993. {{ISBN|1-55860-190-2}}.</ref>

== 저장 프로시저 ==
RDBMS 내의 대부분의 프로그래밍은 [[저장 프로시저]](SP)를 이용하여 이루어진다. 가끔 프로시저들은 시스템 안팎으로 전송되는 정보의 양을 줄이는데 큰 기여를 한다. 보안을 위해 시스템 디자인은 저장 프로시저에만 접근 권한을 주고 테이블에 직접 주지 않을 수도 있다.

== 용어 ==
[[파일:Relational database terms.svg|350px|섬네일|오른쪽|관계형 데이터베이스 용어.]]
관계형 데이터베이스는 1970년 6월 IBM 산호세 연구소의 [[에드거 F. 커드|에드거 커드]]가 처음 정의하였다.<ref name=codd /> RDBMS의 자격이 되는 커드의 관점은 [[커드의 12 규칙]]에 요약되어 있다. 관계형 데이터베이스는 우세한 종류의 데이터베이스로 되어가고 있다. 관계형 모형 외에도 [[계층형 모델|계층적 데이터베이스 모형]]과 [[네트워크 모형]] 등이 있다.

아래의 표는 가장 중요한 관계형 데이터베이스 용어의 일부 및 그와 일치하는 [[SQL]] 용어를 요약한 것이다:

{| class="wikitable"
|-
! SQL 용어
! 관계형 데이터베이스 용어
! 설명
|-
| [[로우 (데이터베이스)|'''로우''']]
| '''[[튜플]]''' 또는 [[로우 (데이터베이스)|'''레코드''']]
| 하나의 항목을 대표하는 데이터
|-
| [[컬럼 (데이터베이스)|'''컬럼''']]
| '''속성'''(어트리뷰트, attribute) 또는 '''필드'''
| 튜플의 이름 요소 (예: "주소", "태어난 날짜")
|- 
| [[테이블 (데이터베이스)|'''테이블''']]
| [[관계 (데이터베이스)|'''관계''']] 또는 '''기초 관계변수'''(base relvar)
| 같은 속성을 공유하는 튜플의 모임. (컬럼이나 로우의 모임.)
|-
| [[VIEW (SQL)|'''뷰''']] 또는 '''[[결과 집합]]'''
| '''파생 관계변수'''(derived relvar)
| 튜플들의 모임. ([[질의어]]에 응답하는 RDBMS의 데이터 보고서)
|}

== 관계 또는 테이블 ==
{{본문|관계 (데이터베이스)|테이블 (데이터베이스)}}
[[관계 (데이터베이스)|관계]]란 같은 [[속성 (컴퓨터 과학)|속성]]을 지닌 튜플의 모임으로 정의된다. 튜플은 일반적으로 오브젝트와 그 오브젝트의 정보를 대표한다. 오브젝트는 일반적으로 물리적인 오브젝트나 개념을 가리킨다. 관계를 일반적으로 여러 열이나 컬럼으로 조직된 [[테이블 (데이터베이스)|테이블]]로 기술하기도 한다. 속성에 의해 참조된 모든 데이터는 동일한 도메인에 있으며 동일한 제약을 따른다.

== 제약 ==
제약(constraint)들을 이용하면 속성의 범위에 추가적으로 제한을 둘 수 있다. 이를테면 제약은 주어진 값의 속성을 1부터 10 사이의 정수로 제한할 수 있다. 각 속성이 관련 도메인을 소유하고 있으며, 여기에 '''도메인 제약'''이 존재한다. 관계형 모형의 두 가지 주된 원칙은 '''개체 무결성'''과 '''참조 무결성'''이다.
* [[기본 키]]
* [[외래 키]]
* [[저장 프로시저]]
* [[인덱스 (데이터베이스)|인덱스]]

== 정규화 ==
{{본문|데이터베이스 정규화}}
정규화는 관계형 모델의 필수적인 부분으로 커드가 처음 제안한 것이다. 단순하지 않은 도메인(비원자성 값)과 데이터 중복을 제거하기 위해 설계된 프로시저들의 모임을 아우르며, 데이터 조작의 변칙과 데이터 무결성의 손실을 예방한다.

== 관계형 데이터베이스 관리 시스템 ==
{{본문|관계형 데이터베이스 관리 시스템}}
'''관계형 데이터베이스 관리 시스템'''(關係形 Database 關理 System, {{lang|en|Relational Database Management System}}, '''RDBMS''')은 RDB를 관리하기 위한 [[소프트웨어]] 또는 그것이 설치된 [[시스템]]을 말한다.
=== 미국 기업 제품 ===
* [[오라클 DBMS]](Oracle)
* [[마이크로소프트]]의 [[마이크로소프트 SQL 서버|MS SQL Server]]
* [[마이크로소프트]]의 [[마이크로소프트 액세스|MS Access]]
* [[MySQL]]
* [[로터스 소프트웨어]]의 [[어프로치]](Approach)
* [[PostgreSQL]]
* [[IBM]]사의 [[DB2|IBM DB2]]와 [[IBM SQL/DS]]
* [[볼랜드]]의 dBASE IV와 파라독스(Paradox)
* [[Sybase]]
* [[Informix]]
* [[VMS/Rdb]]

=== 대한민국 기업 제품 ===
* [[알티베이스]]의 [[알티베이스 HDB]]
* [[티맥스소프트]]의 [[티베로]]
* [[서치솔루션]]의 [[CUBRID]]

== 같이 보기 ==
* [[데이터베이스]]

== 각주 ==
<references />

{{데이터베이스}}
{{컴퓨터 과학}}

{{전거 통제}}

[[분류:데이터베이스]]
[[분류:잉글랜드의 발명품]]
[[분류:데이터베이스 이론]]
[[분류:관계형 모델]]
[[분류:데이터베이스 관리 시스템]]
[[분류:관계형 데이터베이스 관리 시스템| ]]