## ----setup, include = FALSE----------------------------------------------
source("setup/setup.R")

## ----nycflights13, message=FALSE-----------------------------------------
# library(nycflights13)
# 
# airports

## ------------------------------------------------------------------------
# library(dm)
# 
# flights_dm_no_keys <- dm(airlines, airports, flights, planes, weather)
# flights_dm_no_keys

## ----listlike------------------------------------------------------------
# names(flights_dm_no_keys)
# flights_dm_no_keys$airports
# flights_dm_no_keys[c("airports", "flights")]

## ------------------------------------------------------------------------
# dm_enum_pk_candidates(
#   dm = flights_dm_no_keys,
#   table = planes
# )

## ------------------------------------------------------------------------
# flights_dm_only_pks <-
#   flights_dm_no_keys %>%
#   dm_add_pk(table = airlines, columns = carrier) %>%
#   dm_add_pk(airports, faa) %>%
#   dm_add_pk(planes, tailnum) %>%
#   dm_add_pk(weather, c(origin, time_hour))
# flights_dm_only_pks

## ------------------------------------------------------------------------
# dm_enum_fk_candidates(
#   dm = flights_dm_only_pks,
#   table = flights,
#   ref_table = airlines
# )

## ------------------------------------------------------------------------
# flights_dm_all_keys <-
#   flights_dm_only_pks %>%
#   dm_add_fk(table = flights, columns = tailnum, ref_table = planes) %>%
#   dm_add_fk(flights, carrier, airlines) %>%
#   dm_add_fk(flights, origin, airports) %>%
#   dm_add_fk(flights, c(origin, time_hour), weather)
# flights_dm_all_keys

## ------------------------------------------------------------------------
# flights_dm_no_keys %>%
#   dm_draw(rankdir = "TB", view_type = "all")

## ------------------------------------------------------------------------
# flights_dm_no_keys %>%
#   dm_add_pk(airlines, carrier) %>%
#   dm_draw()

## ------------------------------------------------------------------------
# flights_dm_only_pks %>%
#   dm_add_fk(flights, tailnum, planes) %>%
#   dm_draw()

## ------------------------------------------------------------------------
# flights_dm_all_keys %>%
#   dm_draw()

## ------------------------------------------------------------------------
# flights_dm_no_keys %>%
#   dm_examine_constraints()
# 
# flights_dm_only_pks %>%
#   dm_examine_constraints()
# 
# flights_dm_all_keys %>%
#   dm_examine_constraints()

## ------------------------------------------------------------------------
# flights_dm_only_pks %>%
#   dm_get_all_pks()

## ------------------------------------------------------------------------
# flights_dm_all_keys %>%
#   dm_get_all_fks()

## ------------------------------------------------------------------------
# flights_dm_all_keys %>%
#   dm_examine_constraints() %>%
#   tibble::as_tibble()