사용자가 제공 한 데이터로 다수의 조회 테이블을 구현하는 가장 좋은 방법

StackOverflow https://stackoverflow.com/questions/1186736

  •  19-09-2019
  •  | 
  •  

문제

사용자가 하나 이상의 연락 방법 (이메일, 전화, 팩스 등)을 선택하기를 원한다고 가정 해 봅시다. 그리고 그들이 다른 것을 선택한다면, 그들은 그들 자신의 단일 접촉 방법을 입력 할 수 있습니다. 데이터베이스에 이것을 저장하는 가장 좋은 방법은 무엇입니까? 나는 세 가지 가능성을 본다 :

  1. 세트 데이터 유형 열을 사용하여 단일 "Other_Contact"Varchar 열을 사용하여 선택적인 사용자 입력 값을 저장하십시오.
  2. 다수의 매니와 사용자 입력 열을 사용하십시오. 따라서 사용자 테이블, contact_method 테이블 및이 둘을 연결하는 user_contact_method 테이블이 있습니다. user.other_contact varchar column 옵션 사용자 입력 값을 저장합니다.
  3. 다수를 사용하십시오. 2와 동일한 설정이지만 사용자는 Contact_Method 테이블에 항목을 추가 할 수 있습니다. 그러나 이것은 "시스템"값을 추적하기 위해 열을 추가해야한다는 것을 의미합니다 (사용자가 변경하거나 삭제할 수 없으며 드롭 다운에만 나타납니다). 또한 사용자가 제공 한 값을 변경할 수 있도록 추가 논리를 추가해야합니다.

위의 의견에 대한 의견이 있습니까? 아니면 더 나은 솔루션이 있습니까?

도움이 되었습니까?

해결책

하나의 사용자와 여러 연락 방법 가능성이있는 경우 아마도 일대일 관계 일 것입니다. (추가 복잡성과 그러한 모델 쿼리의 느린 느낌 때문에 가능한 곳이면 어디든 피할 수 있습니다.)

users_table 
id INTEGER
name VARCHAR 
etc.

contacts_table
user_id INTEGER -- foreign key on user.id
contact_method ENUM('email', 'phone', 'mail', 'other')
contact_address VARCHAR
etc.
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top