👇 정리한 SQL파일 및 예제/과제 데이터들은 하단 git 링크에 오시면 있어용 👇
오늘의 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
'📖 Study > 🎈 ᴏʀᴀᴄʟᴇ' 카테고리의 다른 글
2023/09/01 📌 시퀀스란 무엇일까 (0) | 2023.09.10 |
---|---|
2023/08/31 ✏️ 요구분석과 수집방법 (0) | 2023.09.08 |
2023/08/29 👀 테이블, 컬럼, 속성, 제약조건을 알아보자 (0) | 2023.09.08 |
2023/08/28 ✏️ 데이터베이스는 무엇인가 (0) | 2023.09.08 |
2023/08/28 👋 휴먼교육센터 개강시작 (0) | 2023.09.08 |