기록을 합시다.
간단하게 DB 설계 연습을 해보았다. 본문
수업 시간에 선생님이 학생과 학생 성적에 관한 테이블을 짜보라고 하셨다.
그래서 얼른 이렇게 즉석으로 한 번 써보고 다시 봐 보려고 캡쳐해서 저장해놨다.
그런데 역시 집에 오고 나니 보이는 단점들이 있다.
1. curriculum(curriculum_name) teacher(teacher_name) student(student_name)을 CHAR로 설정한 것이 단점이라고 생각했다. 사람이나 과목마다 글자 수가 다를 거라 생각되어 VARCHAR로 두는 게 나을 것이라는 생각이 들었다.
2. CONSTARINT 제약으로 FOREIGN KEY만 두는 게 아니라 ON UPDATE/ON DELETE에 동작을 더 줬으면 좋았을 것 같다.
- 특히 grade의 참조 칼럼인 student_id에 ON DELETE CASCADE를 줘야했다. 즉, student row가 하나 사라지면(student 한 명이 삭제 되면) 그에 관련된 기록인 성적이 삭제 되어야 했다.
- student테이블의 참조 칼럼인 teacher_id에 SET DEFAULT NULL을 줘야할 것 같았다. (이건 긴가민가하다) 왜냐하면 선생님이 다른 학교로 가거나 그만두게 되면 DB에서 삭제해야한다. 그러면 학생도 함께 삭제 하는 게 아니라, 담당 선생님의 데이터만 NULL로 바꾸면 될 것 같았다.
매우 허접해 보이는 테이블 구조들이지만, 직접 작성하고 피드백을 하니 배우는 게 많은 것 같다.
아, 그리고 Heidi SQL에서는 ERD 구조를 안 보여줘서 불편하다. ㅜㅜ
다들 MySQL Workbench를 쓰는 이유가 있었던 것인가..
그래서 chatGPT한테 그려달라 했다. ㅎㅎ
'공부 > DB' 카테고리의 다른 글
[Oracle] 데이터베이스 생성 및 계정 생성 (0) | 2023.04.25 |
---|---|
[Oracle] Oracle 21C XE Windows11에서 설치하기 + SQL Developer (1) | 2023.04.25 |
Email은 Primary Key가 될 수 있을까?(feat. 스택오버플로우) (0) | 2023.04.13 |
NoSQL에 대한 기본적인 개념 (0) | 2023.04.12 |
Virtual Machine에서 MySQL Server 깔고 컴퓨터에서 Client로 접속하기 (1) | 2023.04.07 |
Comments