### Description

dm_add_fk() marks the specified columns as the foreign key of table table with respect to a key of table ref_table. Usually the referenced columns are a primary key in ref_table, it is also possible to specify other columns via the ref_columns argument. If check == TRUE, then it will first check if the values in columns are a subset of the values of the key in table ref_table.

### Usage

dm_add_fk(
dm,
table,
columns,
ref_table,
ref_columns = NULL,
...,
check = FALSE,
)


### Arguments

 dm A dm object. table A table in the dm. columns The columns of table which are to become the foreign key columns that reference ref_table. To define a compound key, use c(col1, col2). ref_table The table which table will be referencing. ref_columns The column(s) of table which are to become the referenced column(s) in ref_table. By default, the primary key is used. To define a compound key, use c(col1, col2). ... These dots are for future extensions and must be empty. check Boolean, if TRUE, a check will be performed to determine if the values of columns are a subset of the values of the key column(s) of ref_table. on_delete Defines behavior if a row in the parent table is deleted. - "no_action", the default, means that no action is taken and the operation is aborted if child rows exist - "cascade" means that the child row is also deleted This setting is picked up by copy_dm_to() with set_key_constraints = TRUE, and might be considered by dm_rows_delete() in a future version.

### Value

An updated dm with an additional foreign key relation.

Other foreign key functions: dm_enum_fk_candidates(), dm_get_all_fks(), dm_rm_fk()

### Examples


nycflights_dm <- dm(
planes = nycflights13::planes,
flights = nycflights13::flights,
weather = nycflights13::weather
)

nycflights_dm %>%
dm_draw()

# Create foreign keys:
nycflights_dm %>%