Hmm pod ręką akurat mam te same tabele w relacji 1:1 i zapytanie insert do Users. Ogólnie zastanawiam się czy opłaca się robić relacje Users.default_company <-> Companies.id.
W Companies Users_id to właściciel firmy, a Coordinator_id to koordynator firmy, który nie zawsze jest dodawany. Tak samo Users.default_id nie zawsze jest uzupełnione.
Companies:
CREATE TABLE IF NOT EXISTS `mydb`.`Companies` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL COMMENT 'Nazwa firmy',
`address` VARCHAR(255) NOT NULL COMMENT 'Ulica numer',
`city` VARCHAR(45) NOT NULL COMMENT 'miasto',
`post_code` VARCHAR(10) NOT NULL COMMENT 'kod pocztowy',
`www` VARCHAR(255) NULL,
`description` TEXT NULL COMMENT 'opis',
`logo` VARCHAR(255) NOT NULL,
`Users_id` INT UNSIGNED NOT NULL,
`Coordinator_id` INT UNSIGNED NULL,
PRIMARY KEY (`id`, `Users_id`, `Coordinator_id`),
INDEX `fk_Companies_Users1_idx` (`Users_id` ASC),
INDEX `fk_Companies_Users2_idx` (`Coordinator_id` ASC),
CONSTRAINT `fk_Companies_Users1`
FOREIGN KEY (`Users_id`)
REFERENCES `mydb`.`Users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Companies_Users2`
FOREIGN KEY (`Coordinator_id`)
REFERENCES `mydb`.`Users` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
Users
CREATE TABLE IF NOT EXISTS `mydb`.`Users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`email` VARCHAR(255) NOT NULL,
`password` VARCHAR(255) NOT NULL,
`name` VARCHAR(255) NOT NULL,
`surname` VARCHAR(255) NOT NULL,
`phone` VARCHAR(255) NULL,
`default_comapny` INT UNSIGNED NULL,
PRIMARY KEY (`id`, `default_comapny`),
UNIQUE INDEX `id_UNIQUE` (`id` ASC),
INDEX `fk_Users_Companies1_idx` (`default_comapny` ASC),
CONSTRAINT `fk_Users_Companies1`
FOREIGN KEY (`default_comapny`)
REFERENCES `mydb`.`Companies` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
Insert
INSERT INTO `Users` (`email`, `name`, `password`, `surname`) VALUES ('michalina.witkowska@yahoo.com','Mateusz','a3084dcff39b508cbeda33749f53f6a7','Lewandowska')