MySQL 기반 웹 응용 프로그램에 고객, 서비스 및 메모라는 세 개의 엔터티가 있습니다. 각 고객은 다른 사용자가 게시 한 여러 노트를 가질 수 있습니다. 마찬가지로 서비스는 여러 노트를 가질 수 있습니다. 쉬운 검색을 위해 모든 노트를 단일 테이블에 저장하고 싶습니다. 기본적으로이 테이블에 대한 삽입/업데이트보다 많은 쿼리가 있습니다.여러 엔터티가 포함 된 데이터베이스 모델링
Table: Customer
id - integer
name - varchar
status - varchar
Table: Service
id - integer
name - varchar
status - varchar
price - float
Table: Note
id - integer
note - text
author - integer
type - varchar
cdate - datetime
나는이 테이블 사이의 관계 구축을 위해 두 가지 방법을 준비했습니다 :
이Approach #1
Table: CustomerNote
id - integer
customer_id - integer (References Customer table)
note_id - integer (References Note table)
Table: ServiceNote
id - integer
service_id - integer (References Service table)
note_id - integer (References Note table)
두 번째 방법은 저장 노트 테이블을 수정하는 것입니다 다음
는데이터베이스 스키마입니다 엔티티 이름과 레코드의 ID. 이 방법은 방법 # 1
Approach #2
Table: Note
id - integer
note - text
author - integer
type - varchar
cdate - datetime
entity - varchar (possible values are Customer and Service)
entity_id - integer (related to id in the corresponding entity)
두 번째 방법은 여분의 테이블이 필요하지 않습니다에 언급 된 관계를 사용하지 않지만, 외래 키 관계를 시행하기 쉽지 않다. 이전에 말했듯이 삽입/업데이트보다 더 많은 쿼리가 있습니다. 그렇다면 어느 것이 더 이상적이고 효율적인 접근 방법이 될까요?
엄격한 외래 키 관계를 구현하면 성능 문제가 있는지 알고 싶습니다.