Solo puse claves foraneas en las tablas pedidos (para referencias al cliente y a los prodcutos) y en factura (para referenciar a pedidos que ya referencia a los clientes y productos)
private const val PEDIDOS_SQL_CREATE_ENTRIES =
"CREATE TABLE IF NOT EXISTS ${FerreteriaContract.PedidoEntry.TABLE_NAME} (" +
"${FerreteriaContract.PedidoEntry.COLUMN_NAME_CODIGO} INTEGER PRIMARY KEY AUTOINCREMENT," +
"${FerreteriaContract.PedidoEntry.COLUMN_NAME_DESCRIPCION} TEXT,"+
"${FerreteriaContract.PedidoEntry.COLUMN_NAME_FECHA} DATE,"+
"${FerreteriaContract.PedidoEntry.COLUMN_NAME_COD_CLIENTE} INTEGER, "+
"FOREIGN KEY (${FerreteriaContract.PedidoEntry.COLUMN_NAME_COD_CLIENTE}) "+
"REFERENCES ${FerreteriaContract.ClienteEntry.TABLE_NAME} " +
" (${FerreteriaContract.ClienteEntry.COLUMN_NAME_CODIGO}))"
private const val FACTURAS_SQL_CREATE_ENTRIES =
"CREATE TABLE IF NOT EXISTS ${FerreteriaContract.FacturaEntry.TABLE_NAME} (" +
"${FerreteriaContract.FacturaEntry.COLUMN_NAME_CODIGO} INTEGER PRIMARY KEY AUTOINCREMENT," +
"${FerreteriaContract.FacturaEntry.COLUMN_NAME_FECHA} DATE,"+
"${FerreteriaContract.FacturaEntry.COLUMN_NAME_VALOR} DECIMAL,"+
"${FerreteriaContract.FacturaEntry.COLUMN_NAME_COD_PEDIDO} INTEGER, "+
"FOREIGN KEY (${FerreteriaContract.FacturaEntry.COLUMN_NAME_COD_PEDIDO}) " +
"REFERENCES ${FerreteriaContract.PedidoEntry.TABLE_NAME} " +
"(${FerreteriaContract.PedidoEntry.COLUMN_NAME_CODIGO}));"
Tabla intermedia entre pedidos y productos
private const val PEDIDO_PRDUCTO_SQL_CREATE_ENTRIES =
"CREATE TABLE IF NOT EXISTS pedidos_productos("+
"id INTEGER PRIMARY KEY AUTOINCREMENT,"+
"cod_pedido INTEGER,"+
"cod_producto INTEGER, "+
"FOREIGN KEY (cod_pedido) " +
"REFERENCES ${FerreteriaContract.PedidoEntry.TABLE_NAME} " +
"(${FerreteriaContract.PedidoEntry.COLUMN_NAME_CODIGO}),"+
"FOREIGN KEY (cod_producto)" +
"REFERENCES ${FerreteriaContract.ProductoEntry.TABLE_NAME} " +
"(${FerreteriaContract.ProductoEntry.COLUMN_NAME_CODIGO}))"