사용자가 제공 한 데이터로 다수의 조회 테이블을 구현하는 가장 좋은 방법
-
19-09-2019 - |
문제
사용자가 하나 이상의 연락 방법 (이메일, 전화, 팩스 등)을 선택하기를 원한다고 가정 해 봅시다. 그리고 그들이 다른 것을 선택한다면, 그들은 그들 자신의 단일 접촉 방법을 입력 할 수 있습니다. 데이터베이스에 이것을 저장하는 가장 좋은 방법은 무엇입니까? 나는 세 가지 가능성을 본다 :
- 세트 데이터 유형 열을 사용하여 단일 "Other_Contact"Varchar 열을 사용하여 선택적인 사용자 입력 값을 저장하십시오.
- 다수의 매니와 사용자 입력 열을 사용하십시오. 따라서 사용자 테이블, contact_method 테이블 및이 둘을 연결하는 user_contact_method 테이블이 있습니다. user.other_contact varchar column 옵션 사용자 입력 값을 저장합니다.
- 다수를 사용하십시오. 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.
제휴하지 않습니다 StackOverflow