# Relations and Join ## Four kind of relation - One to Many - Many to One - Many to Many - One to One All relations are implemented by foreign key ## One to Many & Many to One use foreign key to link two tables ### CRUD of foreign key #### Insert(Create) - the object foreign key refered exist: success - the object foreign key refered non exist - end up error - the foreign key is NULL: insert success (value=null) #### Delete delete the refered object of foreign key On Delete Options(set when create table, and can be change) - Restrict(default) -> throw error - No Action -> throw error - Cascade -> delete all related object too - Set Null -> set all related object foreign key field to null - Set Default -> set all related object foreign key field to a default value ## Joins ### Joins - Produces value by merging together rows from different related tables - Use join most times that you're asked to find data that involve multiple resource :::info - Table order between FROM and JOIN frequently makes a difference - We must give context if column names collide - if not, it will (throw Error or return wrong data) - throw Error - column reference "id" is ambiguous - Table can be renameed using AS ::: ## ###### tags: `DB` `postgresql` `Note`