-schema:데이터베이스에서 데이터가 구성되는 방식과 서로 다른 엔티티 간의 관계에 대한 설명. 데이터베이스의 청사진과 같다.
-entity:정보의 단위,데이터베이스의 테이블로 표시할수 있다.유용한 정보를 저장하고 관리하기 위한 집합적인 것.
-table:사전에 정의된 열의 데이터 타입대로 작성된 데이터가 행으로 축적된다.
-field(column):테이블의 한 열을 가르킴
-record:테이블에 저장된 항목,행렬의 행이라고 볼수 있다.
-key:테이블의 각 레코드를 구분할 수 있는 값. 각 레코드 마다 고유한 값을 가진다.
-primary key: 각행을 구분하는 유일한 열
-foreign key: 두 테이블을 서로 연결하는데 사용하는 키
:하나의 레코드가 다른 테이블의 레코드 한 개와 연결된 경우이다.
예를들어 user이라는 테이블이 있다. 그리고 한 user의 column이 phone_id를 가지고 있다.
이때 phonebook의 테이블을 만들어 phone_number의 테이블을 만들려고할 때 유저는 phone_id를 foreign key로 설정하고 phonebook의 테이블로 연결했을 때 각 전화번호가 각 한명의 유저와 연결되고 그 반대도 동일하다면 1:1관계를 갖는다. 사실 이렇게 1:1 관계에서는 그냥 user table에 저장하는것이 더 좋다. 그래서 자주 사용하지는 않는다.
:하나의 레코드가 서로다른 여러개의 레코드와 연결된 경우이다.
위와같은 구조에서 한명의 유저가 여러 전화번호를 가질 수 있다. 그러나 여러명의 유저가 하나의 전화번호를 가질 수는 없다. 이런경우 1:N의 관계이다. 이런 1:N 관계는 관계형 데이터베이스에서 가장 많이 사용한다
여러 개의 레코드가 다른 테이블의 여러 개의 레코드와 관계가 있는 경우이다.
N:N 관계를 위해 스키마를 디자인할 때에는 Join 테이블을 만들어 관리를 한다.
사진과같이 여행상품을 관리하는 테이블이 있다면 여러 개의 여행 상품이 있고 여러 명의 고객이 있다. 고객은 한명의 여러 개의 여행 상품을 구매할 수 있고 여러 명의 고객이 구매할 수 있다.
이렇게 Customer 테이블과 package table이 따로 존재한다면, N:N 관계를 표현하기 위해서는 다음과 같은 관계를 나타낼 수 있다.
customer_package 테이블에서는 고객 한명이 여러 개으 여행 상품을 가질 수 있고, 여행 상품 하나가 여러 개의 고객을 가질 수 있다.custonmer_package 테이블은 customer_id와 package_id를 묶어주는 역할이다. 이 테이블을 통해 어떤 고객이 몇개의 여행 상품을 구매했는지 또는 어떤 여행 상품이 몇 명의 고객을 가지고 이는지 등을 확인할 수 있다.이렇게 조인 테이블을 생성하더라도,조인 테이블을 위한 기본키는 반드시 cp_id이어야 한다.
위에 테이블과같이 추천인이 누구인지 파악하기위해 자기참조 관계를 사용할 수 있다.
한명의 유저는 한ㅁ여의 추천인을 가질 수 있다. 하지만 여러 명이 한명의 유저를 추천인으로 등록할 수 있기 떄문에 1:N 관계와 유사하다. 하지만 일대다 관계는 서로 다른 테이블의 관계를 나타낼때 표현하는 방법이다.