Oracle Semi Project
기간 : 3월 16일 ~ 3월 20일
💡 주제 : 『 프로젝트 요구분석서 』 내용대로 성적 처리 시스템을 구현해보기
+ 선생님이 요구분석서 관련 내용은 공유하지 말라고해서 꼼꼼히는 못올릴 것같다. 😭
💡 과정 (대략)
1) 요구분석서를 보면서 파악하기
2) ERD 그려보기
3) 테이블 구성
4) SQL 작성 (프로시저, 트리거, 뷰 등등 구현)
5) 데이터 넣어보고 테스트
✔ 과정 1 - 요구분석서 파악하기
✔ 과정 2 - ERD(Entity Relationship Diagram)
ERD는 데이터베이스 구조를 한 눈에 알아보기 위해 그려놓는 다이어그램이라고 한다.
FLOW CHART랑 비슷한거라 생각했는데 완전히 다른 거였다!
플로우차트가 흐름을 그린 거라면 ERD는 구조를 그린 것 (내 생각)
🔗 ERD는 여기서 그렸다!
ERDCloud
Draw ERD with your team members. All states are shared in real time. And it's FREE. Database modeling tool.
www.erdcloud.com
정말 너무 편리한 사이트다 ...
그것도 모르고 난 그림판 킬 생각함^^;ㅋㅋ
이런거 만든 사람은 천사...인가? 🧚♂️
이렇게 바로 SQL로 보낼 수도 있다.
아 물론 이번 프로젝트는 이 기능은 전혀 사용하지 않았다.
직접 다 만든거라구! ✌
ERD는 정말 많은 과정을 거쳤다 ㅋㅋㅋ
과정을 거칠 수록 점점 깔끔해졌고
최종적으론 이런 모습!
깔~~끔!
✔ 과정 3 - 테이블 생성
테이블 만드는 건 쉬웠다 😆
나도 쉽다는 표현을 한다는게 정말 놀랍지만
진짜로 쉬웠다...
예전에 팀끼리 테이블 복사하던 때에 나 혼자만 외래키 이해가 안가서
한동안 외래키 공포증이 있었는데
잘 극복한 것 같다ㅋㅋㅋ
✔ 과정 4 - SQL 작성
프로시저도 커서도 뷰도 이제는 다 만들 수 있다!!!
(보면서ㅎ;)
💡 프로젝트 진행 방식
![]() |
![]() |
![]() |
ZOOM, 구글 MEET, 구글 프레젠테이션을 활용하였다!
💡 프로젝트 전에는 완전 몰랐던 것
1. JOIN과 UNION이 비슷하다고 생각했다.
JOIN은 두 릴레이션의 속성을 결합하여 결과 튜플을 형성하고,
UNION 절은 두 쿼리의 결과를 결합
그러니까 .. JOIN은 수평(병렬)으로 결합, UNION은 수직(직렬)으로 결합
2. 식별관계의 개념을 잘 몰랐다...
그냥 다 비식별로 하면 안되나요? ㅇㅈㄹ할뻔 휴
이렇게 중요한걸 왜 몰랐던거지;
⭐ 식별 관계 → 부모 테이블의 기본키 또는 유니크 키를 자식의 기본키로 사용하는 관계
부모 테이블의 키가 자신의 기본키에 포함되기 때문에
반드시 부모 테이블에 데이터가 존재해야 자식 테이블에 데이터를 입력할 수 있습니다.
즉, 부모 데이터가 없다면 자식 데이터는 생길 수 없습니다.
⭐ 비 식별 관계 → 부모 테이블의 기본키 또는 유니크 키를 자식의 외래 키로 사용하는 관계
자식 데이터는 부모 데이터가 없어도 독립적으로 생성될 수 있습니다.
부모와의 의존성을 줄일 수 있기 때문에 조금 더 자유로운 데이터 생성과 수정이 가능합니다.
💡 프로젝트를 통해 알게된 꿀팁
1. 날짜(DATE) 컬럼을 통해 데이터 컨트롤 쉽게하자
예를 들면 학생회원테이블에 등록날짜 컬럼을 추가하기 그리고 사용자별로 기능이 완전히 다른데
회원을 한 테이블에 합치면
뭐 이것저것 오류가 발생할 수 있음
예를 들면 .. 학생만 수강신청이 가능해야하는데 교수도 가능하다던가 등등
2. 반복될 수 있는 탈락사유, 과정명 등등 이런건 1정규화 혹은 코드화하기
3. ORA-01427 : single-row subquery returns more than one row
단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다 ㅇㅈㄹ
완전 간단한 삭제 프로시저여서 개무시했는데
값이 여러 개가 나오면 이 에러가 뜸
그러니까 하나로 나오게 하면 된다.
나같은 경우는 바로 SELECT 하는게 아니고
서브쿼리로 COUNT() 활용했다
소감
오라클 프로젝트를 앞두고 걱정이 많았다...
자바에 비해 조심해야 할 것도 많았고 오라클 속 구조에 대한 이해가 부족한 탓이었다.
하지만 성적 처리 시스템을 ERD 설계부터 구현을 하면서
어렵고 이해가 안 갔던 것들에 대한 의문들이 풀렸다.
예를 들면 식별 관계의 중요성을 느꼈고, 프로시저나 커서, 트리거에 대해
구조적으로 이해가 갔다.
그리고 가장 중요한 건 자바 프로젝트 때처럼 오라클에 대해 점점 재미를 느끼게 되었다는 점!
또 부족했던 코딩 실력이 팀원들 덕분에 여러모로 많은 발전을 할 수 있던 프로젝트였다.
'📃 기록 > 프로젝트' 카테고리의 다른 글
머니로그 | 좋은 소비를 유도하는 가계부 (2) | 2022.06.26 |
---|---|
쉽게 매장을 관리할 수 있는 편의점 키오스크 (Java) (6) | 2022.02.14 |