sql >> Databasteknik >  >> RDS >> PostgreSQL

Viloläge 'Invers' i mappningsfilen

Invers bestämmer bara vilken enhet i en relation som är ansvarig för att uppdatera databasen för att återspegla associationen.

Antag en en till många dubbelriktad association. Det finns två klasser i koden A och B, A innehåller en uppsättning av B, B har en referens till A. På databasnivå finns det bara en främmande nyckel som ska uppdateras, tabellen för B innehåller en kolumn till primärnyckel av A.

I det här fallet, anta att vi sätter inversen =sant på setsidan. Detta innebär att bara att lägga till en entitet till uppsättningen inte kommer att aktivera den främmande nyckeluppdateringen. Eftersom ansvaret för att uppdatera den främmande nyckeln vilar på B. Så det räcker inte att lägga till ett B-objekt till den uppsättning som A underhåller för att uppdatera kolumnen för främmande nyckel. objectA.addToSetOfB(objectB) kommer inte att påverka den främmande nyckeln.

Först när B får en referens till A kommer den främmande nyckeln i tabellen för B att uppdateras. Så, objectB.setA(objectA) kommer säkert att uppdatera den främmande nyckeln och faktiskt ställa in relationen.

Jag tror att samma koncept kommer att bära på många till många relationer också.



  1. PDOException::(PDO::__construct():Oväntad serverupplösning vid caching_sha2 auth:109) med MySQL 8 / PHP 7.2 / Laravel

  2. När ska du använda lagrade java-procedurer med en Oracle-databas ... vilka är nackdelarna?

  3. Kör en lagrad procedur i en annan lagrad procedur i SQL-servern

  4. Ta bort efterföljande decimal noll