Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support for compound keys #3

Closed
davidski opened this issue Jul 10, 2019 · 5 comments · Fixed by #335
Closed

Support for compound keys #3

davidski opened this issue Jul 10, 2019 · 5 comments · Fixed by #335
Labels
enhancement New feature or request epic Major features that require careful planning
Milestone

Comments

@davidski
Copy link

Are there any plans/thoughts on supporting compound keys? I frequently have a table where the primary key is a combination of fields. It looks like putting a PK constraint on something like that in dm requires creating a new single column that is a mutation of the two non-unique components.

Thanks for the package!

@krlmlr
Copy link
Collaborator

krlmlr commented Sep 14, 2019

Yes, compound keys would be very nice to have, not sure when this happens though. At the very least we need another refactoring of internal structures (#57).

@krlmlr
Copy link
Collaborator

krlmlr commented Oct 10, 2019

Blocked by #54, but we're a step closer.

@krlmlr krlmlr added this to the 0.0.5 milestone Oct 29, 2019
@krlmlr krlmlr added the enhancement New feature or request label Feb 14, 2020
@krlmlr krlmlr modified the milestone: 0.1.2 Feb 14, 2020
This was referenced Apr 27, 2020
@krlmlr krlmlr added the epic Major features that require careful planning label May 1, 2020
@krlmlr
Copy link
Collaborator

krlmlr commented May 1, 2020

Now tracked in https://github.com/krlmlr/dm/projects/2.

@krlmlr krlmlr mentioned this issue Jun 11, 2020
3 tasks
krlmlr added a commit that referenced this issue Apr 28, 2021
- `dm_add_pk()` and `dm_add_fk()` support compound keys via the `c()` notation, e.g. `dm_add_pk(dm, table, c(col1, col2))`. `dm_nycflights13()` returns a data model with compound keys by default. Use `compound = FALSE` to return the data model from dm 0.1.13 or earlier (#3).
- `dm_get_all_fks()` includes `parent_pk_cols` column that describes the primary key columns of the parent table (#335).
- `dm_examine_constraints()` and other check functions count the number of rows that violate constraints for primary and foreign keys (#335).
- `copy_dm_to(set_key_constraints = FALSE)` downgrades unique indexess to regular indexes (#335).
- `rows_truncate()` implemented for data frames (#335).
- `dm_enum_fk_candidates()` enumerates column in the order they apper in the table (#335).
@krlmlr
Copy link
Collaborator

krlmlr commented May 2, 2021

Support will be added in dm 0.2.0, planning to send it to CRAN this week.

krlmlr added a commit that referenced this issue May 4, 2021
dm 0.2.0

- Deprecate `dm_get_src()` `tbl.dm()`, `src_tbls.dm()`, `copy_to.dm()`. These functions have better alternatives and use the notion of a "data source" which is being phased out of dplyr (#527).
- `*_pk()` and `*_fk()` functions gain an ellipsis argument that comes before `check`, `force` and `rm_referencing_fks` arguments (#520).

- `dm_add_pk()` and `dm_add_fk()` support compound keys via the `c()` notation, e.g. `dm_add_pk(dm, table, c(col1, col2))`. `dm_nycflights13()` returns a data model with compound keys by default. Use `compound = FALSE` to return the data model from dm v0.1.13 or earlier (#3).
- `dm_get_all_fks()` includes `parent_pk_cols` column that describes the primary key columns of the parent table (#335).
- `dm_from_src()` supports the `schema` argument also for MariaDB and MySQL databases (#516).
- dm objects now inherit from `"dm_v1"` in addition to `"dm"`, to allow backward-compatible changes of the internal format (#521).
- Use hack to create compound primary keys on the database (#522).
- `dm_examine_constraints()` and other check functions count the number of rows that violate constraints for primary and foreign keys (#335).
- `copy_dm_to(set_key_constraints = FALSE)` downgrades unique indexes to regular indexes (#335).
- `rows_truncate()` implemented for data frames (#335).
- `dm_enum_fk_candidates()` enumerates column in the order they apper in the table (#335).
@github-actions
Copy link
Contributor

github-actions bot commented May 3, 2022

This old thread has been automatically locked. If you think you have found something related to this, please open a new issue and link to this old issue if necessary.

@github-actions github-actions bot locked and limited conversation to collaborators May 3, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
enhancement New feature or request epic Major features that require careful planning
Development

Successfully merging a pull request may close this issue.

2 participants