Many to Many relationship without duplicates

Hello, me and a colleague are trying to make a database where we have a table called "students" and one called "subjects", meaning many students can take many subjects. We've been researching for a bit and the way explained in the Appian Documentation is the one explained here, it says create both the parents and child CDTs, then create a third table where you have: a primary key, a foreign key that corresponds to the first table, a foreign key that corresponds to the second table, and an index. The problem is that by doing so, you can add duplicates of each, meaning that the same student can be assigned to the same subject twice (this screenshot is the Intermediary record type):

(I made 3 record types, Subjects, Students and Intermediary). That's why I wanted to ask all of you for any suggestions so that this table does not take duplicates, or if there's anything that we are doing wrong. Thank you!

  Discussion posts and replies are publicly visible

Parents
  • 0
    Certified Lead Developer

    Two options:

    1) Low-Level: Define a unique key on the two foreign key fields in the database. Trying to insert duplicates will fail which is not easy to manage in Appian.

    2) High-Level: Implement a check in Appian to prevent a user adding an already existing combination. Simple to implement and great UX, but not 100%, as the check and the insert are delayed.

  • Hello again, I just read again your answer and realized that the screenshot that I shared would be the low-level option, right? I have 2 foreign keys, so as I result, I shouldn't be able to add duplicate values. If that happens, you mentioned that "inserting duplicates would fail", by that you mean that it is simply not possible (the user would not be able to do so, and a error message would be displayed or something similar) or that if it occurs, it would lead to an internal error?

    Also, would the low-level option be wronger than the high-level option? I mean, would it be a viable option to implement in an application, or it's not correct enough?

    Thank you and sorry in advance if I didn't explain good enough! I'm still learning a lot from Appian.

Reply
  • Hello again, I just read again your answer and realized that the screenshot that I shared would be the low-level option, right? I have 2 foreign keys, so as I result, I shouldn't be able to add duplicate values. If that happens, you mentioned that "inserting duplicates would fail", by that you mean that it is simply not possible (the user would not be able to do so, and a error message would be displayed or something similar) or that if it occurs, it would lead to an internal error?

    Also, would the low-level option be wronger than the high-level option? I mean, would it be a viable option to implement in an application, or it's not correct enough?

    Thank you and sorry in advance if I didn't explain good enough! I'm still learning a lot from Appian.

Children