-
ERD
Mysql Workbench -> File -> New Model -> Physical Schemas 에 오른쪽 + 클릭 ->
Schema 즉, DB이름 : board4
-> 만들고 상단에 EER 모델(ERD:데이터베이스 설계) 새로 만들기 = Entity 간의 관계를 나타내는 모델
table = Entity = 개체
Member(회원) - board(게시물) 의 관계를 게시물번호로 Member(회원)FK - board(게시물)PK 로 하면 안된다. 회원이 게시물하나 쓸 때 게시물에서는 새 튜플이 나오지만 회원도 그 번호와 같은 Member튜플을 만들어야 한다.
그러면 똑같은 회원정보 튜플이 계속 늘어난다. 그래서 반대로 하면된다.Member(회원) - board(게시물) 의 관계를 회원번호로 board(게시물)FK - Member(회원)PK 로 하면 된다. 게시물에 회원의 번호가 있는 상태로 새 튜플이 나오면 회원은 튜플을 따로 만들지 않아도 연결된다.
그래서 회원은 독립적인 개체이며 게시물은 종속적인 개체인 것이다.
이제 관계의 조건 2가지를 알아야 한다.
1. 다수성 : 1 대 1 , 1 대 n
회원 개체에 게시물 개체가 다수이니 1 대 n 관계다.
2. 선택 : 선택, 필수(선에 O)
회원 개체가 꼭 게시물 개체와 관계를 가지지 않아도 된다. 선택관계다.(게시물작성을 안 할 수도 있으니)
3. 식별 : 식별 - 1 대 1 관계일 때만 가능 , 비식별
식별 = FK 인 행을 PK키로도 사용(격상이라고부름)
StarUML
들어가서 다운받기 // ERD 미리 설계해보는 간단한 프로그램
https://www.visual-paradigm.com/
이 툴도 아주 좋으나 시간관계상 패스
File - > New From Template - > UML Conventional 생성
여기서 "수단 & 목표 분석" 을 하는 것이다.
1. Use Case Model = 사용자 요구분석 2. Analysis Model = 시스템 목표 분석 3. Design Model = 설계 4. Implementation Model = 구현 5. Deployment Model = 배치 Design Model ( 설계 단계 ) : 타프로그램은 여기서 설계하면 eclipse 와 연동되어 실시간으로 class가 만들어진다 1-1. Design Model 에 오른쪽 마우스 -> add -> package 로 membermanage, boardmanage 를 만든다. 1-2. 왼쪽 하단에 Dependecy 로 boardmanage 가 membermanage를 의존하는 테이블로 연결 2-1. membermanage 오른쪽 마우스 -> add Diagram -> Class Diagram 을 만들어 여기에서 Class 설계 2-2. membermanage 오른쪽 마우스 -> add -> class 2개 만들기 -> 이름 : Member , MemberDAO 2-3. Member 이름칸 더블클릭해놓으면 오른쪽 첫번째 add Attribute
: ERD 참고해 java 형으로 만들기(오른쪽 + 기호누르면서) -> -no: int -name: String
이름 앞 ' - ' 는 private, ' + ' 는 public (옆에 돋보기+ 누르면 설명나옴)2-4. Member 오른쪽마우스 add -> Operation(getter,setter 메서드 추가)
: java 형이지만 쓰는 형식은 SQL이다 (변수명 변수타입)3-1. boardmanage 에도 똑같이 classdiagram에 BoardDAO, Board 클래스 추가 3-2. Board누르고 우측하단에 Properties - > stereotype : VO 입력 3-3. Board 도 ERD 참고해 java 형으로 만들되 Member class도 꺼내서
참조관계 Directed Association 으로 Member을 참조하게 한 후 그 참조 값을 -writer 로 선언
(class Board 가 private Member 를 writer로 참조한다는 뜻)
writer: 참조명 or 역할명(rolename)자세한건 파일로 저장했으니 참고.
>> boardmanage.Board ( membermanage.Member 를 참조하였고 역할명은 writer 이다.)
package com.stone.board_member.boardmanage; import java.sql.Date; import com.stone.board_member.membermanage.Member; public class Board { // 일반속성 = 원시속성 private int no; private String title; private String contents; private Date wdate; private long views; // 참조속성 private Member writer; public int getNo() { return no; } public void setNo(int no) { this.no = no; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContents() { return contents; } public void setContents(String contents) { this.contents = contents; } public Date getWdate() { return wdate; } public void setWdate(Date wdate) { this.wdate = wdate; } public long getViews() { return views; } public void setViews(long views) { this.views = views; } public Member getWriter() { return writer; } public void setWriter(Member writer) { this.writer = writer; } }