📖 Study/🎈 ᴏʀᴀᴄʟᴇ

2023/08/30 🤔 테이블과 부모자식사이 , 너와나의 사이?

유리쯔의일상 2023. 9. 8. 11:00
반응형
개쪼렙 개바린이예여 개바린..✨

👇 정리한 SQL파일 및 예제/과제 데이터들은 하단 git 링크에 오시면 있어용 👇

 

GitHub - gayulz/StudyHistory: 나의 공부 기록 commit

나의 공부 기록 commit . Contribute to gayulz/StudyHistory development by creating an account on GitHub.

github.com

 

 

 

 

오늘의 keyword 

테이블  / 컬럼 / 컬럼의 정의 / 기본키와 외래키 / 제약조건 / ERD / 관계

 

 

 

 

 

1. 테이블과 컬럼과 속성과 튜플을 찾아보세요	

분석

상품명이라는 컬럼은 
컬럼명이 상품명이고 , 표현할 수 있는 값이 문자 이다
표현할 수 있는 값을 속성이라고 이해한다

 

 

 

아이디 aaa , 상품명 커피 , cnt 3 이 삭제되었다

delete from 상품등록 where id = 'aaa';

 

아이디 eee, 상품명 커피, cnd 10이 추가되었다

nsert into 상품등록 values ( 'eee', '커피', '10', ' ' );

 

 

 

유니크한 속성명을 참조하여 연결하자

 

 

 

 

테이블 분리 와 관계 

시나리오를 분석하여 테이블을 설계할 때 데이터 중복이 일어난다면 ? 테이블을 분리한다.

테이블 분리를 전문용어로 정규화 라고 한다.

반대로 분리된 테이블을 합치는 것은 조인이라 한다.

테이블이 분리되면 데이터 중복을 최소화 할 수 있다.

그러나 데이터의 연관성도 분리되므로 관련된 컬럼을 분석하고 외래키로 지정한다.

외래키로 지정한 후 부모와 자식 릴레이션 간에 제약 조건도 설정할 수 있다.

부모 릴레이션의 튜플이 삭제되면 참조하고 있는 자식 릴레이션 튜플도 같이 삭제.

또는 부모 릴레이션의 튜플이 삭제되면 참조하고 있는 자식 릴레이션의 튜플에서

외래키 컬럼만 null 로 변경하도록 할 수 있다.

 

 

 

 

외래키 설정 시 옵션들

1. ON DELETE SET NULL / IN UPDATE SET NULL
부모 테이블에서 기본키 값이 수정 또는 삭제 될 경우 하위 테이블의 reference값은 존재 할 수
없다. 옵션이 없는 경우 에러가 발생되고 옵션인 SET NULL로 정의하게 되면 하위 테이블의
reference값이 NULL값으로 변경 되면서 참조 무결성을 유지한다

2., ON UPDATE CASCADE
옵션 CASCADE : 부모테이블 기본키 값이 수정 될 경우
하위 테이블의 reference값은 변경된 상위 테이블의 수정된 값을 가지면서 참조무결성 유지 

3. ON DELETE CASCADE
부모 테이블의 기본값이 삭제 될 경우
하위 테이블의 reference 값이 같이 삭제되면서 참조 무결성을 유지한다

데이터 모델링 ERD

데이터 모델링이란 ? 

- 현실 세계 이슈를 테이블로 설계하는 것 , ERD 그린다음 모델링을 함

 

개체와 개체의 관계란 ? 

- 오라클에서 인식하는 단위, 우리는 테이블로이해하면 된다

 

 

 

 

개체 찾아내기

 

 

 

고객 ( 아이디, 이름, 나이, 포인트 , 등록일 ) 

상품 ( 상품, 상품명, ㅅ량, 등록일)

 

✅ 기본키를 구성해보자 

고객의 아이디와 상품의 번호는 구매라는 기준으로 어떤 관계를 가지고 있는가 ?

 

 

 

 

✅  기준을 변경해보자

고객은 여러 개의 상품을 구매할 수 있다, 상품은 한명의 고객에게만 판매 할 수 있다.

 

 

✅  다시 또 기준을 변경해보자

고객은 하나의 상품만 구매할 수 있고, 상품은 한명의 고객에게만 판매 할 수 있다.

 

 

과제

과제  :  데이터 모델링을 하세요 , ERD / 테이블 유추

문제1

등록된 상품에 대한  리뷰를 남기는 프로그램

상품은  아이디, 상품명, 수량, 등록일로 구성되며  아이디는 중복될 수 없다.

수량은 기본값이 0이다.

상품 하나에는 여러개의 리뷰를 작성 할 수 있다.

리뷰를 작성 할 때는 작성자 내용 등록일이다.

상품이 삭제되면 리뷰도 같이 삭제 되어야 한다.

 

 

풀이

부모테이블 : 상품 / 자식테이블 : 리뷰
reference 상품아이디

상품 ( 상품아이디(PK)/상품명/수량/등록일 ) 아이디는 중복불가, 수량 기본값0
리뷰 ( 상품아이디(FK)/작성자/내용/등록일 ) 상품1개에 리뷰 여러개 작성 가능
상품이 삭제되면 리뷰도 같이 삭제되어야 함

                 상품      [리뷰작성]        리뷰 
상품입장           1            :               N
리뷰입장           N            :               1
최종판단           N            :               M

 

 

 


 

 

 

문제2

수강신청프로그램

강의정보가 있으며 과목명, 교수명, 강의실, 과목번호

수강생정보 학번, 이름, 학년이 있다

수강생은 1개 이상의 강의를 수강할 수 있다.

하나의 강의는 1명 이상의 수강생이 신청할 수 있다.

 

 

 

풀이

강의정보 ( 과목명/교수명/강의실/과목번호 ) - 과목번호 PK 
수강생 ( 학번/이름/학년 ) + 과목번호 FK로 연결

               수강생      [수강신청]       강의정보
수강생입장         1            :             N
강의정보입장       N             :            1
최종판단          N             :            M

 

 

 


 

 

문제3

문제2번에서 업그레이드

강의별로 공지사항을 작성 할 수 있다.

공지사항은 공지내용과 작성일이다.

하나의 강의에는 여러 개의 공지사항이 있을 수 있다

공지사항 하나는 여러 강의에서 공유할 수 없다.

 

 

 

 

풀이

강의정보 ( 과목번호/과목명/교수명/강의실 ) - 과목번호 PK 
공지사항 ( 과목번호/공지내용/작성일 ) - 과목번호 FK

               공지사항      [공지작성]       강의정보
공지입장           N            :               1
강의정보           N            :               1
최종판단           N            :               1

 


 

 

 

 

 

 

 

 

 

 

 

반응형