ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ERD:관계
    SQL 2021. 7. 25. 12:58

    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키로도 사용(격상이라고부름)

    member table 상세
    board table 상세


    StarUML

    https://staruml.io/

    들어가서 다운받기 // 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;
    	}
    
    }

    댓글

Designed by Tistory.