제가 그린 ERD를 사수님께 보여드리니 네이밍 규칙을 참고해서 수정하라고 하셨습니다.
그래서 수정하기 전
어떤 표기법들을 사용하는지 알아봤고
그러면서 다양한 표기법들, 데이터 타입 선택, 새발 표기법, NULL, 단어개수 줄이기를 배워봤습니다.
대표적으로는 스네이크 표기법과 카멜 표기법이 있네요 - 참조 링크
스네이크 표기법은 _ 밑줄로 각 단어를 연결해주는 방법이고 ex)snake_present
카멜 표기법은 낙타 등처럼 올록볼록하게 단어의 첫 글자를 대문자로 사용하여 연결해주는 방법입니다. ex)camelCase
어쨋든 둘 다 가독성을 높이기 위한 방법이라는 점이 포인트인 것 같습니다.

type을 채워볼까 했습니다. type에 datetime을 써도 될 것 같은데 데이터는 타입을 char(14)로 해놓으셨더라고요.
그래서 varchar와 char 의 차이가 무었인지 궁금했습니다.
CHAR는 고정형 문자열, VARCHAR는 가변길이형 문자열입니다.
같은 CHAR(8), VARCHAR(8)이라도 CHAR(8)에 영문자 하나만 넣어서 1Byte 공간만 사용하고 나머지 7Byte는 비어있더라도 총 8Byte 공간이 사용됩니다.
하지만 VARCHAR(8)에는 영문자 하나만 들어가면 1Byte만 사용하게 되죠.
차이점, 공통점 - 링크
최적의 데이터 타입 선정 방법 - 링크
CHAR형
장점 : 읽어오는 속도가 빠르다.
단점 : 저장 공간이 낭비될 수 있다.
VARCHAR형
장점 : 저장 공간을 아낄 수 있다.
단점 : 읽어오는 속도가 CHAR보다 느리다.
공통점 :
문자열 데이터 타입으로 싱글쿼터('')로 값을 나타낸다.
대소문자를 구분한다.
한글은 한 글자당 3Byte(UTF-8의 경우), 영문자는 알파벳 하나당 1Byte의 크기를 가집니다.
설정된 크기를 초과할 경우, 메모리를 초과한 나머지 값은 저장되지 않습니다.
※ mysql 5 버전부터는 괄호안의 숫자가 Byte가 아닌 글자 수를 의미한다고 합니다.
날짜/시간을 담을 타입에 대한 의견은 각 전문가들 끼리도 다른 것 같습니다. - 찾아본 글
datetime 사용하자쪽 의견: 3-8Byte로 필드 크기가 더 작다, datetime 타입 사용시 내부적으로 하나의 숫자로 보기 때문에 연산시 string형보다 더 빠르다.
char 사용하자쪽 의견 : datetime을 사용하면 조건절을 주기가 까다로워진다, datetime 사용시 인덱스 활용이 불가능하게 됨.
일단은 '회사 이름'과 '회사 번호' 두 개를 기본키로 하여 복합키 설정을 해놨는데
이 중에서 무엇을 기본키로 사용해야할지는 회사의 방침에 따라야하는 것 같습니다
그래도 사용할 때 이해하기 편한 이름을 사용하지 않을까 싶네요
기본키는 최대한 하나만 있어야 하기 때문에
회사 이름이 겹칠 가능성이 없다면 이름을 기본키로하고 회사별 번호는 부수키로 사용하면 좋을 것 같습니다. -> 질문하여 해결함
그리고 N:M 관계에서는 새발 표기법을 어떻게 그리는지도 정확하게 알고싶네요
광고희망기업 계약정보 테이블과 문제 정보 테이블의 관계는
1:N이므로 문제 정보 테이블에 광고희망기업의 기본키를 외래키로 가져다 놨었습니다.

새발 표기법 잘 그리는 방법
표기법 선택을 위한 틀을 만들어봤습니다.
3-1. 위의 그림을 떠올리며 1:1, 1:N, N:M 관계 확인
3-2. 최소 카디날리티 비율이 0인지 1인지 즉, 전체 참여인지 부분참여인지 확인
3-3. 새발 표기법 맞게 했나, 기본키, 외래키 맞게 했나 확인
이제 조금 감이 잡히네요
해당 데이터가 NULL을 허용할지 말지 선정하는 방법은 그냥 정말 평범했습니다.
꼭 있어야하는 데이터면 NOT NULL, 없어도 되는 데이터면 NULL을 사용합니다.
이와 관련해서 추가로 연결되는 개념들은
데이터 정렬할 때 NULL은 어느 위치를 갖는가?
였습니다. 오라클은 NULL을 가장 큰 값으로 취급하고
MySQL은 NULL 값을 가장 작은 값으로 취급한다고 합니다.
가장 앞으로 정렬하고 싶다면 이 링크 참고
NULL을 포함한 연산은 결과값 또한 NULL!
NULL은 값이 아니기때문에 비교 연산자 '!=', '=', '<', '>' 등을 사용할 수 없다고 합니다.
MySQL에서의 NULL은 0이나 공백이 아니라 아예 값이 존재하지 않음이라는 점! - 참조 링크
단어의 모음을 빼는 것이죠
영어는 모음(A, E, I, O, U)이 빠져도 어느 정도 예상이 가기 때문에
단어의 모음을 빼서 길이를 줄이면 될 것 같습니다
EX)
QUESTION -> QUSTN
CONTRACT -> CNTRCT
OPTION -> OPTN