ER 그림 및 연관성 100% 이해
개요
모델 간의 연관성(연관성)
미리 정의하면 크로스 모델의 데이터를 호출할 수 있습니다.
또 부모와 아이의 관계, 외부 버튼 설정 등을 이해하지 못하면
서브 데이터를 추가하려면 먼저 모 모델의 데이터를 추가해야 합니다.얼마나
DB 설계에 대한 재평가가 발생할 수 있음...
데이터베이스를 시각화할 수 있는 ER 그림은 매우 중요하다.학습노트로 남기기
참고 자료
(1) 감동을 이해하기 쉽다.ER도의 기초 지식.초보자 필수
[초보자를 향해] 너무 디테일한 Rails Association 튜토리얼[어쨌든][완전 이해]
(2) 이해가 안 돼/중간 테이블.
[초보자 및 자학자 대상] Rubi on Rails를 통해 중간 표를 작성하여 다대다
부자 관계
[초보자를 향해] 너무 디테일한 Rails Association 튜토리얼[어쨌든][완전 이해] 매우 이해하기 쉽기 때문에 인용
이른바 모델 간의 친자 관계
그림으로 생각해봐.
A(User)씨는 자신이 만든 블로그 사이트에 많은 기사(Artical)를 기고했다.
B선생님도 좀 투고할 거예요. 즉, User마다 Article이 많습니다.그렇게 생각해도 돼.(갑자기 나타난 영어는 복선!!) 반대의 입장도 생각해 보세요. 어느 날 기고한 기사(Artical)는 A씨(User)가 썼다. 다음날 투고한 기사는 B가 썼다. 다른 날 기고한 기사도 각각 A, B씨 측이 쓴 기사였다.A씨, B씨가 공동으로 쓴 기사는 불가능합니다. 즉, Article은 누군가에 속하는 User(Article belongs to a user)그렇게 생각해도 돼. User가 없으면 Artical이 생기지 않고, Article은 반드시 누군가의 User에서 탄생한다.네, User는 부모, Artical은 아이입니다.이것은 친자 관계다. 이러한 관계를 User 및 Article이라고 하며 일대다 관계 또는 1:N 관계입니다. 물론 User는 1이고 Artical은 많습니다. 이 부모와 아이의 관계를 구축하기 위해 데이터베이스에서 모델의 관련을 관련이라고 한다 관련이 없다면 어느 사용자가 어떤 기사를 썼는지 모르겠다. 다대다의 관계와 중간 표 다대다의 관계는? 어느 모델을 보든 자신과 상대방은 많다×복수 상태. 기사로 보면 여러 가지 분류가 있기 때문에 기사에 비해 분류가 많아졌다. 분류상으로는 하나의 분류에 많은 문장이 있기 때문에 분류상으로는 문장이 많아진다.이>관계가 많아졌어요. [초보자 및 자학자 대상] Rubi on Rails를 통해 중간 표를 작성하여 다대다
가운데 탁자는 무엇입니까?
다대다의 관계는 두 모델로 실현할 수 없다.
어, 왜?
예를 들어 앞의 문장과 분류의 예.
[보도표]
id
글 제목
❶
❷
매번 글을 쓸 수 있을 때마다 자동으로 생성된 id가 있습니다.
메인 열쇠죠?
[분류표]
id
분류 이름
①
일상적
②
Rails
[가운데 테이블]
id
글 제목
분류 이름
1
❶
①
2
❶
②
2
❷
②
2
❷
①
가능하다면, 위에서 말한 바와 같이, 한 편의 보도에는 여러 가지 종류가 있을 수 있다.
'기사 제목': 생활방식/야외/육아 같은 느낌인가요?
지금 기사 제목과 분류가 두 개밖에 없어요.
가운데 테이블 필요 없어요?내 생각에는 이렇다.그런데 기사와 분류가 계속 늘어날 수도 있어요.
이렇게 하면 이 조합이 무한대예요.
열의 수가 처음 설정되면 증가하지 않기 때문에 다대다 사이에는 중간 표로 대응한다.
모델의 관련성 설정hasmany 가입,through:!
위의 예를 계속하다.
중간표가 있으면 모델의 관련성 설정이 달라진다
먼저 마이그레이션을 수행합니다.
20190627075545_create_categories_articles.rb
class CreateCategoriesArticles < ActiveRecord::Migration
def change
create_table :categories_articles do |t|
t.integer :category_id
t.integer :article_id
t.timestamps null: false
end
end
end
이어 중간표에서 보도모델과 분류모델의 연관성을 진행한다.models/categories_ariticles.rb
class CategoriesArticle < ActiveRecord::Base
belongs_to :category
belongs_to :article
end
문장 모형의 관련models/article.rb
class Article < ActiveRecord::Base
has_many :categories_articles
has_many :categories, through: :articles_categories
end
분류 모델의 관련models/category.rb
class Category < ActiveRecord::Base
has_many :categories_articles
has_many :articles, through: :categories_articles
end
가운데 테이블을 통해서 연결이 됐어요.게다가
through::
이런 키.through 옵션을 통해articles를 통해category에 접근할 수 있습니다
외부 키워드는?(foreign key)
관계 데이터베이스(RDB)에서 테이블의 열을 제한하려면 해당 열이 다른 테이블의 특정 열에 포함된 항목만 입력해야 합니다.
상품이 사라지면 좋은 것도 사라져요
예를 들어, EC 웹 사이트
사용자의 홈페이지에는 자신만의 좋은'좋아요일람표'가 있다.
개인적으로는 상품이 존재하지 않는 상황에서 좋은 것도 사라질 수 있죠?내 생각엔
이럴 때 사용
dependent: :destroy
dependent:destroy의 역할
상품과 괜찮은 모형은 다음과 같은 관계가 있다는 기록이 있다.
models/product.rb
class Product < ApplicationRecord
has_many :favorites, dependent: :destroy
end
models/favorite.rbclass Favorite < ApplicationRecord
belongs_to :user
belongs_to :product
end
dependent: :destroy
이곳에서부모에 해당하는투고가삭제되면나는 아이를 처리할 수 있는 옵션을 설정할 수 있다고 생각한다.이번에 삭제
:destroy
만일 남겨 둘 수 있다면 아무 것도 기재하지 않았으면 좋겠다【Rails】ActiveRecord:dependent 구분 사용 정리【:destroy,:delete,:nullify】
Reference
이 문제에 관하여(ER 그림 및 연관성 100% 이해), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/annaaida/items/a6d6e0f69e6d9d726db0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)