Каким образом сохранить целостность данных в базе без триггеров?
Предположим, у нас есть счета, которые выставляются разным клиентам и услуги, предоставляемые разным клиентам. Хотелось бы на уровне индексов запретить выставление счетов на те услуги, которые данной компании не предоставлялись.
Схема базы:
CREATE TABLE `customers` (
`id` INT(10) NOT NULL,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `bills` (
`id` INT(10) NOT NULL,
`number` varchar(6) NOT NULL,
`customer` INT(10) NOT NULL,
`creation_date` DATE NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `services` (
`id` INT(10) NOT NULL,
`service_name` varchar(50) NOT NULL,
`customer` INT(10) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `Untitled` (
`id` INT NOT NULL,
`bill` INT NOT NULL,
`service` INT NOT NULL,
PRIMARY KEY (`id`)
);
ALTER TABLE `bills` ADD CONSTRAINT `bills_fk0` FOREIGN KEY (`customer`) REFERENCES `customers`(`id`);
ALTER TABLE `services` ADD CONSTRAINT `services_fk0` FOREIGN KEY (`customer`) REFERENCES `customers`(`id`);
ALTER TABLE `Untitled` ADD CONSTRAINT `Untitled_fk0` FOREIGN KEY (`bill`) REFERENCES `bills`(`id`);
ALTER TABLE `Untitled` ADD CONSTRAINT `Untitled_fk1` FOREIGN KEY (`service`) REFERENCES `services`(`id`);
То есть, каким образом запретить в таблице `bills` возможность вставлять данные об услугах, оказанных для других компаний?
Заранее спасибо.