sql >> Database >  >> RDS >> PostgreSQL

Slaapstand 'Omgekeerd' in toewijzingsbestand

Inverse beslist gewoon welke entiteit in een relatie verantwoordelijk is voor het bijwerken van de database om de associatie weer te geven.

Ga uit van een een-op-veel bidirectionele associatie. Er zijn twee klassen in de code A en B, A bevat een set van B, B onderhoudt een verwijzing naar A. Op databaseniveau hoeft er slechts één externe sleutel te worden bijgewerkt, de tabel voor B bevat een kolom naar de primaire sleutel van A.

Neem in dit geval aan dat we de inverse =true aan de set-kant plaatsen. Dit houdt in dat alleen het toevoegen van een entiteit aan de set de update van de refererende sleutel niet activeert. Omdat de verantwoordelijkheid om de refererende sleutel bij te werken bij B ligt. Het toevoegen van een B-object aan de set die A onderhoudt, is dus niet voldoende om de refererende sleutelkolom bij te werken. objectA.addToSetOfB(objectB) heeft geen invloed op de externe sleutel.

Pas als B een verwijzing naar A krijgt, wordt de refererende sleutel in de tabel voor B bijgewerkt. Dus objectB.setA(objectA) zal zeker de externe sleutel bijwerken en de relatie daadwerkelijk opzetten.

Ik denk dat hetzelfde concept ook zal gelden voor de vele tot vele relaties.



  1. PHP PDO:charset, setnamen?

  2. SQL Server:Vervang ongeldige XML-tekens uit een VARCHAR(MAX)-veld

  3. ANSI SQL-standaard voor het trefwoord ORACLE MINUS

  4. Forceer in Postgresql uniek op combinatie van twee kolommen