Nem mukodik mySql-ben az identifying es non-identifying relationship struktura. Otletek?
2 tesztet csinaltam:
1: Letrehoztam egy "A" tablat es egy "B" tablat.
Az "A" tabla a parent, a "B" a children.
A ketto kozott Identifying relationship van.
Itt normalis modon a "B" tablaba nem engedett adatot beirni, amig nem volt az "A" ban. Igy kell lennie. Ha meg irtam az "A"-ba, es utana a "B"-be, akkor pedig az "A"-bol nem engedte kitorolni.
Eddig minden jo, igy kell mukodnie.
A 2. teszt:
Ugyan az mint az elso, csak Non-identifying relationshippel.
Azt az eredmenyt kellene kapnom, hogy a rendszer engedi beletenni a children table-ba elemeket, anelkul, hogy nincs a parent-ban. Nem engedi. Pontosan minden ugyan ugy tortenik, mint az elozo esetben.
Miert? Valakinek van ezzel tapasztalata?
A Stackoverflow-on tobbek kozott ez a kepletes leiras van, amivel ugy tunik hogy 127 ember egyetertett. Ennek ellenere, nem igy van.
A book belongs to an owner, and an owner can own multiple books. But the book can exist also without the owner and it can change the owner. The relationship between a book and an owner is a non identifying relationship.
A book however is written by an author, and the author could have written multiple books. But the book needs to be written by an author it cannot exist without an author. Therefore the relationship between the book and the author is an identifying relationship.
Kosznoom a valaszokat elore !
Esetleg valami kód?
Hogy hoztad létre a kapcsolatokat?
Konkret pelda:
Log adatbazis.
Ahelyett, hogy minden log sorba betennem ujra az User Agent stringet, ami sok helyet foglal, csinaltam kuon egy User Agent adatbazist. Igy kevesebb helyet foglal es gyorsabb az indexeles.
A log adatbazisba pedig az UserAgents adatbazis primaryKey-e a foreign key, az a link a 2 kozott.
Kapcsolat: Non identifying 1:n (1*userAgent : n*log)
SQL:
-- -----------------------------------------------------
-- Table `colllision`.`userAgents`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS ` `.`userAgents` (
`userAgentID` INT NOT NULL AUTO_INCREMENT ,
`userAgent` VARCHAR(512) NOT NULL ,
PRIMARY KEY (`userAgentID`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `colllision`.`log`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `colllision`.`log` (
`logID` INT NOT NULL AUTO_INCREMENT ,
`postReqs` VARCHAR(1024) NULL ,
`getReqs` VARCHAR(512) NULL ,
`logTime` TIMESTAMP NOT NULL ,
`ipAddress` VARCHAR(32) NOT NULL ,
`userAgents_userAgentID` INT NOT NULL ,
PRIMARY KEY (`logID`) ,
INDEX `fk_log_userAgents1_idx` (`userAgents_userAgentID` ASC)
CONSTRAINT `fk_log_userAgents1`
FOREIGN KEY (`userAgents_userAgentID` )
REFERENCES `colllision`.`userAgents` (`userAgentID` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
ENGINE = InnoDB;
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!