0
這是我的第一篇文章和我似乎無法找到任何地方的答案....多態關聯或一些輕鬆
我有一個具有多個公司的數據庫,每家公司都有多個位置。 我遇到了試圖定義聯繫人的問題。一些聯繫人需要是全球性的,並且可以在任何位置使用 ....某些聯繫人只需要存在一個位置。在 下面的contact_info表中,我們指定了聯繫人(公司或地點)的可見性。但是,該位置需要選擇其主要聯繫人。 從聯繫人 - >位置和位置 - >聯繫人離開FK。
我知道還有另一張桌子,但我似乎無法將其概念化。
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)
你說有些聯繫人存在於多個地點,有些聯繫人存在於一個地點。 這是否取決於聯繫人是哪些公司的一部分? 例如如果一個公司有幾個位置,那麼該公司僱用的所有聯繫人都有相同的位置。如果公司有一個位置,那麼聯繫人將擁有一個位置。 – antony 2013-04-22 07:11:48
公司「Ajax」聯繫了「Mike」,他應該是「紐約」,「洛杉磯」和「邁阿密」地點的主要聯繫人......他們有一個聯繫人「Joe」,他只會出現在「New約克「......在contact_info表中,Mike將有company_id = ajax,location_id NULL,而Joe將有一個company_id NULL和location_id = New York ....當我的意思是」出現「時,有一種形式可以選擇主要聯繫人爲位置 – 2013-04-22 14:32:57