[Ruby On Rails] DB_1_물리적모델링

sunaaa·2021년 4월 12일
2

Ruby On Rails

목록 보기
4/20
post-custom-banner

ubuntu에서 디렉토리에 접속해 code .를 치면 vscode로 열림

schema.db

  • 새로운 프로젝트 인수인계 받았을 때 DB 구성 확인(db경로 안에 있음)
  • 직접 파일을 수정하거나 건들여서는 안됨! 문제생김!!!
  • 현재 DB의 모델링된 구조가 어떻게 되어있는지 지도의 역할을 하는 것이지, 여기서 변경한다고 바뀌지 않음.
  • ActiveRecord 타임스탬프 : 마지막으로 변경된 시간
  • SQL 뭐 사용하는지 정보
  • 각각의 테이블 정보
    - 테이블 이름, 각각의 속성, 속성 타입(문자열, index검색빠르게 해주기 위한 정보)

루비온레일즈로 모델링 하기
1. bundle install gemfile설치
2. rails db:create db:migrate db:seed

  • db:create : postgreSQL에 레일즈 명령어를 이용해서 데이터베이스를 생성하는 것
  • db:migrate : 기존에 넣어둔 마이그레이션 파일을 마이그레이트해서 데이터베이스에 밀어넣는 작업
  • db:seed : 시드파일에 더미데이터를 넣어놨음. 그 데이터를 데이터베이스에 밀어넣는 작업

레일즈에서 명령어를 칠 때는 앞에 rails 명령어로 시작

(1) 상품 만들기 : rails generate(=g) model Item
Item 단수로 적어야 함.
=> db/migrate에 타임스템프가 찍힌 파일 생성됨. models 생성됨.

(2) 옵션 만들기 : rails g model Option item:references name:string stock:integer

포린키 : 외부테이블의 정보를 끌어오기 위해 사용
item : item이라는 테이블을 참조한다(실제로는 item_id를 의미함)
null: false : 이 값은 비어있어서는 안된다는 뜻
=> Option에 item Id가 비어있는 경우가 없기 때문

항상 null:false여야 하나? 약한 관계일 때에는 Yes

Order와 User관계처럼, User가 삭제되어도 Order가 삭제되는 것이 아니라 단순히 User의 Id를 null값으로 바꿔주는 관계에서는, user_id가 반드시 null값이 될 수 없는 것은 아님
=> 이 경우 null:false 옵션 지워줘야 함

db:migrate로 저장해주고, schema.db 파일을 열어보면 아래와 같이 저장되어 있다.

(3) 주문 만들기
rails g model Order user:references receiver_name:string receiver_phone: string zipcode:string address1:string address2:string total:integer
=> null : false 옵션 반드시 지워줘야 함

db:migrate

(4) 장바구니 만들기
rails g model LineItem order:references option:references unit_price:integer quantity:integer total:integer
=> 옵션은 null : false 지워줌

db:migrate

여기까지가 반정도 했다고 보면 됨!!!

  • 데이터베이스 테이블 설정, 각 컬럼 속성 지정, 포린키 설정해서 relation 설정

  • 데이터베이스 설정은 했지만 어플리케이션에서는 아직 구축이 되기 전 상태임

  • 다음에 이어서 : 어플리케이션 설정, N:N관계, 마이그레이션 파일

profile
Be Playful Front-end Developer
post-custom-banner

2개의 댓글

comment-user-thumbnail
2021년 4월 12일

크# 역시 정리요정
선아님 블로그보고 복습합니다~♡

1개의 답글