私は3つのテーブルをmysql、1つはCompanyテーブル、もう1つはライセンステーブル、最後は両方のプライマリキー間の結合テーブルです。入社テーブル内のライセンスIDは、これが起こることはできませんが、複数の企業が1つのライセンスのために存在することができますので、私は唯一のライセンスIDプライマリに1つの一意の外部キーを許可する
HERESにテーブル
のための1つの会社のIDを許可する何かをする必要がありテーブルライセンス
CREATE TABLE `License` (
`license_id` int(11) NOT NULL AUTO_INCREMENT,
`license_number` varchar(45) NOT NULL,
`start_date` date NOT NULL,
`end_date` date NOT NULL,
`duration` int(11) NOT NULL,
`expiry_date` date NOT NULL,
`product_id` int(11) DEFAULT NULL,
PRIMARY KEY (`license_id`)
) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=latin1;
;
会社表
CREATE TABLE `Company` (
`company_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`physical_address` varchar(255) DEFAULT NULL,
`postal_address` varchar(255) DEFAULT NULL,
`reseller_id` int(11) DEFAULT NULL,
PRIMARY KEY (`company_id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=latin1;
とこれまでのところ、私はこの
INSERT INTO CompanyLicense (license_id, company_id) VALUES
('2','6') on duplicate key update license_id = '2';
doesntのを持って
CREATE TABLE `CompanyLicense` (
`license_id` int(11) NOT NULL,
`company_id` int(11) NOT NULL,
PRIMARY KEY (`license_id`,`company_id`),
KEY `companlicence_company_fk_idx` (`company_id`),
CONSTRAINT `companylicense_company_fk` FOREIGN KEY (`company_id`) REFERENCES `Company` (`company_id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `companylicense_license_fk` FOREIGN KEY (`license_id`) REFERENCES `License` (`license_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
テーブルに参加するには、あなたがcompanylicense
にcompany
を一意にするために必要な仕事
見出しがひどく書かれている –
ライセンスごとに会社が1つしかない場合は、「会社」を「ライセンス」のフィールドにしてはどうでしょうか? – Quassnoi
実際に動作する –