Table = Relation
)column = attribute = field
)관계 타입(relationship type)
⚡ 회원정보(users)
id id int not null auto increment
email email varcher2(40) null 로컬용 계정, sns에서 로그인할 경우, 이 필드는 비우고 snsid 조회
비밀번호 password varcher2(40) not nullsnsid snsid varchar2(50) null sns으로 로그인 한 경우 sns 유저 구분 아이디
프로필썸네일 profileImage varchar2(300) null 이미지가 저장되는 상대경로 지정 프로파일 이미지
게시판(board)
id id int not null autoIncrement본문글 content varchar2(300) not null
주제 subject varchar2(50) not null
회원은 0, 1 또는 그 이상의 게시글을 작성할 수 있다.
- 키는 밑줄이 그어져 있음 - 직원 1명이 다수의 프로젝트 작업 - 다수의 프로젝트는 직원 1명이 작업 - 직원은 직원 번호, 이름, 직위, 전화번호의 속성을 가짐 - 프로젝트는 과제 번호와 예산 속성을 가짐 - 직원과 프로젝트는 작업 관계로 연결되어 있음속성
관계 대응 수(cardinality)
: 튜플의 수, 두 개체 타입의 관계에 실제로 참여하는 개별 개체⚡ 그림 6-23) 학생과 강좌의 관계
min은 관계에 참여하는 개체의 수가 적어도 min값 이상은 되어야 한다.
max는 **관계에 참여하는 개체의 수가 max를 넘을 수 없다.최소값이 0이라는 뜻은 관계에 참여하는 개체의 수가 0이상이므로 반드시 참여할 필요가 없다.*
max 값이 10인 경우, 10개까지 참여할 수 있다.
max 값이 표시하면, 임의의 수만큼 참여할 수 있다.그림 6-24) 학과와 학생의 관계
학과와 학생은 1:N 관계이며
하나의 학과에 여러 명의 학생이 소속되어 있다.
(관계 대응수는 1은 학과 쪽에 표기하고 학생쪽은 N으로 표기 되어 있다.)
(최솟값, 최댓값) 표기 시, 각 개체의 관점에서 관계에 참여하는 횟수를 적는다.
학과는 학생이 없어도 개설 가능이나, 학생은 학과에 무조건 소속되어 있어야 함
(최솟값, 최댓값)
으로 표기함.*
은 학생과 연결된 관계의 N을 의미관계 | (min1, max1) | (min2, max2) |
---|---|---|
1:1 | (0, 1) | (0, 1) |
1:N | (0, *) | (0, 1) |
N:M | (0, *) | (0, *) |
전체 참여,부분 참여
로 구분전체 참여
는 개체 집합의 모든 개체가 두 줄, 부분 참여
는 일부만 한 참여함.⚡ EX. 학생의 경우 교환, 휴학 사유로 수강을 안 할 수도 있다.
강좌의 경우 폐강 되는 과목 없이 수강 신청을 하는 학생이 반드시 있다고 가정하면 수강 관계와 전체 참여 관계를 맺을 수 있다.
⚡ 도서 하나를 주문 시 주문이 여러 번 들어 갈 수 있고, 한번만 들어갈 수 있고, 안들어갈 수도 있기 때문에 1:N 관계
고객 한 명당 주문을 안 하거나, 한 번만 하거나, 여러 번 할 수 도 있기 때문에 1:N 관계
유형 엔터티
무형 엔터티
문서 엔터티
코드 엔터티
⚡ 학생 한 명은 취미가 없을 수도 있다. O
학생 한 명은 취미가 여러 개 있을 수 도 있다.식별자 관계 : 실선으로 표현한다.
학생별 취미가 학생의 학번을 자신의 주 식별자로 설정한다.
⚡ 비식별 관계 : 점선으로 표현한다.
사원정보가 부서정보의 부서코드를 일반 속성으로 두었다.
⚡ SHOP 1 1 FOOD
- 하나의 음식만 팔 수 있음
1 : N- SHOP은 여러 개의 음식을 팔 수 있음
N : M- 다양한 상점들과 다양한 음식들
⚡ 학생은 담당교수와 소속학과 무조건 있어야 함 교수는 여러 명의 학생을 둘 수도 안 둘수도 있다. 0도 포함해야 하며 1: N 선택 관계
교수는 소속학과가 있어야 하고 학생을 담당할 수 있어야 하기 때문에 위와 같이 되며, 강좌에 대한 강의를 무조건 해야하나 봄 ⇒ 강의가필수
이기에 1이상이고 교수 한 명 당 여러 개의 강의를 할 수 있기 때문에 교수 : 강의 1: N이나 필수
현재 학년/학기 정보를 어떻게 포함해야 하며… 교수 또한 학생번호를 가져야 하네?
강좌의 경우 강의하는 교수도 있어야 하고 학생이 수강을 해야 하며, 강좌를 진행할 학과도 있어야 함 강좌의 경우 학생이 여러 명 들을 수도 안들 수도 있기에선택
이며, 학생 한명이 여러 개의 강좌를 들을 수도 있으니 다 대 다1:N
학생은 수강 내역을 여러 개 가질 수 있다. 수강은 무조건 해야 한다 필수이고 수강은 기본키가 다 참조?
수강의 경우 기본키가 전부 다른 테이블을 통해 가져와야 하기 때문에 식별 관계로 연결함..근데 따로 기본키를 또 설정해야 할까..?
생각보다.. 테이블 만들면서 테이블들 간의 관계 설정하는 게 너무 헤갈린다ㅜㅜㅜㅜ 어떻게 생각하면 정화하게 설정할 수 있을까 고민되네... 개념적으로는 알겠는데 설정하려고 하면 헤갈림... 연습하면 나아지겠지?