저는 국가, 지역 및 도시 테이블을 연결하는 가장 좋은 방법을 찾으려고합니다.국가 지역 및 도시 테이블에 대한 MySQL 관계
내 웹 사이트에서 사용자가 마을에 들어갈 수 있기를 바랍니다. 그런 다음 국가 및 지역 (선택 사항)을 입력하거나 모두 입력해야합니다.
현재 내 테이블은
TBL > 사용자 같다 townID (FK)
> TBL 마을이 ID (PK) townName regionID (FK DEFAULT NULL)
TBL > 지역이있다 id (PK) 지역 이름 countryID (FK NOT NULL)
tbl > 국가 ID (PK) 국가 이름
내가 가능성이 더에 마을 관계에 사용자를 침으로 생각 :
TBL > 사용자가 locationID (FK)
TBL > 위치가 ID (PK) townID (FK) regionID (FK) countryID (FK)
하지만 불필요하고 문제가 더 복잡해 졌다고 생각하십니까?
국가 데이터베이스가 이미 채워져 있습니다. 나는 사용자가 입력 한 도시> 지역> 국가 관계에 대한 내 자신의 참고 문헌을 작성하려고합니다. 따라서 사용자가 지역 및 국가가없는 도시에 입장하면 지역 ID없이 동일한 이름의 도시가없는 경우 지역 ID없이 마을에 입력됩니다. 지역 및 국가 ID가 사용자에 의해 입력 된 도시의 경우도 마찬가지입니다. 들어가기 전에 이미 존재하는 마을> 지역> 국가 관계가 없는지 확인합니다. 나중에이 사이트를 개발하면서 사용자가 입력 한 도시를 기반으로 국가/지역에 대한 Ajax 제안을 제공 할 것입니다.
질문에 대한 그래서 :
나는 그런 중복 데이터 또는 데이터로 가능하게 덮어 쓰는이와 함정을 직시 할 수 있습니다. 원하는 방식으로 테이블을 구성하는 더 좋은 방법이 있습니까?
이것은 이전 질문에 의해 답변을 얻을 수 있습니다. 그러나 PHP 처리를 줄이기 위해 할 수있는 일이 있습니다. 분명히 한 PHP 문장을 삽입하는 것을 선호하지만 한 번에 너무 많은주의 사항이 있다고 생각합니다.
또한 사용자 타운 항목이 null 일 수 있으며 지역에 대한 외래 키 참조를 포함 할 수도 있고 포함하지 않을 수도 있습니다.이를 고려하여 View를 만드는 것이 가장 좋습니다.
호스팅되기 때문에 나는 MySQL 기능을 사용하지 않을 것입니다.
설명이 필요하면 알려주십시오. 계속하기 전에이 권리를 처음으로 얻고 싶습니다. 그래서 당신의 도움은 값을 헤아릴 수 없을 것입니다.
답장을 보내 주셔서 감사합니다. 생각만큼 많이, 내 SQL 기술은 가난하므로 그렇게하기 전에 손을 뻗을 것이라고 생각했습니다. View out을 정렬하지 않고는 아무 작업도 수행 할 수 없지만 사용자 타운 항목이 null 일 수 있으며 지역에 대한 FK 참조가 포함되어 있거나 포함되어 있지 않을 수 있으므로 을 고려해 볼 수 있습니다. ? tbl> users. *가 포함 된보기입니다. 그런 다음 마을, 지역 및 국가를 추가 열로 만들고 해당 테이블에서 채워진보기는 null이 아닙니다. –
다음은 작동하는 것처럼 보입니다.하지만 이것은 내 머리 꼭대기에있는 것입니다. 더 좋은 방법이 있습니까? SELECT * FROM tbl_users 가입 tbl_towns on tbl_towns.id = tbl_users.birthPlace 가입 tbl_regions.id = tbl_towns.regionID 가입 tbl_countries on tbl_countries.id = tbl_regions.countryID –