이해하기 쉬운 관계의 종류와 SQL 문법

이건우·2021년 4월 10일
0

DataBase

목록 보기
3/4

관계의 종류

1:1 관계

'테이블 한개당 다른 테이블의 한 레코드와 연결되어있는 경우' 라 한다지만,
크게 와닿지가 않았다.

그림은 아래와 같다. 하지만 이것을 조금 더 직관적으로 이해하기 쉬운 예는 어떨까 ?

하나의 컴퓨터로 두대의 마우스는 쓸 수 없다. 꽂을 수 있는 슬롯이 남아 있더라도, 이것은 별개의 문제.. 마치 컴퓨터와 마우스의 관계와 같은것이 1:1 관계이다.

1:N 관계

'테이블 레코드 하나당 여러개의 레코드와 연결되어있는 경우'이다. 예를 들면 유저와 전화번호의 테이블 관계가 아래와 같다고 할때,

한 유저는 여러개의 전화번호를 가질 수 있다. 하지만 그 반대는 성립할 수가 없다.
이런것을 '일대 다' 관계라 한다.

조금더 직관적으로 내 나름대로의 일생생활에서의 해석을 단다면,

컴퓨터의 USB 허브처럼 여러가지의 USB를 이용하는 저장장치 혹은 기기들을 컴퓨터를 중심으로 여러 기기를 연결 할 수있다. 과연 여럿 기기는 그 상태에서의 한 곳외에 다른 컴퓨터를 연결 시킬수 있는가 ?

N:M 관계

여러개의 레코드가 다른 여러개의 레코드를 가지는 관계이다. 해당 관계의 경우에 따로 '조인 테이블'을 만들어 관리를 하게된다. 다른 두 개체가 관계 개체에 1:N 관계를 맺도록 하고 관계 개체가 다른 두개의 primary key를 참조하는 foreign key를 컬럼으로 가지도록 한다.

일대다 관계와 비슷하지만 이번에는 양방향에서 다수를 가질 수 있는 경우에 해당된다.

하지만 조금 더 직관적으로 이해할수 있는 예는 무엇이 있을까 ?

피시방에서의 '노하드 시스템'이다. '노하드 시스템'은 네트워크 드라이브식으로 자료를 같이 쓰거나 혹은 폴더를 서로 공유 할 수가있다.

서버 컴퓨터

↓

매니지먼트 시스템

↓

허브

↓

클라이언트 PC

서버와 클라이언트 사이에 1:N 관계를 맺도록하는 허브를 둠으로써,
허브를 중심으로 다른 두개의 primary키를 참조하는 foregin 키를 갖게되는것이다.

때에따라 유지보수를 하게될때 자동으로 로그를 남길 수있고, (권한이 있다면)
클라이언트에서 공유된 네트워크 드라이브를 직접 변경하거나 시스템에 영향을 줄 수가 있다.

SQL 문법 사용 순서

SQL 문법은 일정한 형식과 규칙이있다.
크게 이러한 형식인데, Select * from 테이블 where 조건 SQL을 사용하게될때 오래 암기할수 있는 방법을 발견하여, 아래와 같이 소개 하고자한다.

셀프웨어 구해옹

Select, (셀)
From, (프)
Where, (웨어)
Group by, (구)
Having, (해)
Order by  (옹)

앞글자만 따서 지어놓은 것으로, 이러한 순서대로 헷갈리지않게

Select 뒤에는 속성(컬럼명),
From 뒤에는 테이블,
Where 뒤에는 조건,
Group by 뒤에는 원하는 컬럼명,
Having (주로 Group by와 자주사용되므로) count와 같은 집계함수.(sum,avg,min,max..)
Order by 순서,

이런 순서로 들어오며 아래 예시와 같은 느낌으로 SQL이 작성이된다.

SELECT job, SUM(sal) "급여합계"
  FROM emp  
 WHERE job != 'SALES'      -- 판매원은 제외
 GROUP BY job              -- 업무별로 Group By 
HAVING SUM(sal) > 5000     -- 전체 월급이 5000을 초과하는
 ORDER BY SUM(sal) DESC;   -- 월급여 합계로 내림차순 정렬

자료 출처,
( 직관적인 SQL의 이해 :
https://medium.com/@atmega328mu/db-%EA%B0%9C%EC%B2%B4-%EA%B0%84%EC%9D%98-%EA%B4%80%EA%B3%84%EB%93%A4-e712303b76fb),

(직관적인 문법 사용순서 :
https://velog.io/@yeonlisa/Database-SQL-%EB%82%B4%EC%9E%A5%ED%95%A8%EC%88%98#select-%EC%8B%A4%ED%96%89-%EC%88%9C%EC%84%9C )

profile
내가 느낌만알고 한줄도 설명할줄 모른다면 '모르는 것'이다.

0개의 댓글