0

이 내 첫 번째 게시물입니다 난 아무데도 답을 찾을 수가 없어 쉽게 무언가를 ....다형성 협회 또는

나는 여러 회사가있는 데이터베이스가 각 회사는 여러 위치를 가지고있다. 연락처를 정의하는 데 문제가 있습니다. 일부 연락처는 어떤 위치에서나 전체적으로 사용할 수 있어야하며 이어야합니다. 일부 연락처는 한 위치에만 존재해야합니다. 아래 contact_info 테이블에서 연락처 (회사 또는 위치)의 공개 여부를 지정합니다. 그러나 위치는 기본 연락처를 선택해야합니다. 그러면 FK가 연락처 -> 위치 및 위치 -> 연락처에서 나옵니다.

다른 테이블이 관련되어 있다는 것을 알고 있지만 개념화하지 못했습니다. 모든 연결 (즉 EntryID, UserID, CompanyID)를 저장하는 목적으로 만 귀하의 회사에 대한 테이블, 사용자와 테이블과 테이블있을 수 있도록

CREATE TABLE `company_info` (
`id` INT NOT NULL AUTO_INCREMENT, 
`name` VARCHAR(100) NOT NULL DEFAULT '', 
PRIMARY KEY (`id`), 
UNIQUE KEY `name` (`name`)); 

CREATE TABLE `location_info` (
`id` INT NOT NULL AUTO_INCREMENT, 
`company_info` INT NOT NULL DEFAULT -1, 
`name` VARCHAR(100) NOT NULL DEFAULT '', 
`primary_contact_id` INT NOT NULL DEFAULT -1, 
PRIMARY KEY(`id`), 
UNIQUE KEY(`company_id`,`name`), 
FOREIGN KEY (company_id) REFERENCES company_info(id) 
FOREIGN KEY (primary_contact_id) REFERENCES contact_info(id)); 

CREATE TABLE `contact_info` (
`id` INT NOT NULL AUTO_INCREMENT, 
`company_id` INT 
`location_id` INT, 
`type` ENUM('Company','Location') NOT NULL DEFAULT 'Company', 
`first_name` VARCHAR(50) NOT NULL DEFAULT '', 
`last_name` VARCHAR(50) NOT NULL DEFAULT '', 
PRIMARY KEY(`id`), 
UNIQUE KEY(`id`,`company_id`,`location_id`), 
FOREIGN KEY (location_id) REFERENCES location_info(id), 
FOREIGN KEY (company_id) REFERENCES company_info(id) 
+0

일부 연락처는 여러 위치에 있고 일부 연락처는 한 위치에 있다고 말했습니까? 그 연락처는 어떤 회사에 속해 있습니까? 예. 한 회사에 몇 개의 위치가있는 경우 해당 회사에서 고용 한 모든 연락처에 동일한 위치가 있습니다. 회사에 하나의 위치가 있으면 연락처에 해당 위치가 있습니다. – antony

+0

회사 "Ajax"는 "뉴욕", "로스 앤젤레스"및 "마이애미"위치의 기본 연락처 인 "Mike"에게 연락합니다 ..... 그들은 "New" York "... contact_info 테이블에서 Mike는 company_id = ajax, location_id NULL을 가지지 만 Joe는 company_id NULL 및 location_id = New York을 갖습니다 ..."표시 "한다는 것은 기본 연락처를 선택하는 양식입니다 위치 –

답변

0

가장 효과적인 방법은 그것을 분할 될 것이다. 이렇게하면 나중에 쉽게로드 할 수 있습니다.