• JackbyDev@programming.dev
    link
    fedilink
    English
    arrow-up
    25
    ·
    5 months ago

    Why is there a separate table for men and women in the first place? Shouldn’t there be a person table with a many to many relationship with itself (because polyamory exists)?

    • ResoluteCatnap@lemmy.ml
      link
      fedilink
      English
      arrow-up
      9
      ·
      5 months ago

      To that point a person table with a relationship table. So this way you can reference relationship between two or more persons within the relationship table and that could be joined to the person table if needed. I don’t think you’d really be able to keep it within one table while exploring multiple relationships unless you’re storing a list of ids that is interpreted outside of sql. Also a relationship table would allow exploring other types of relationships such as exes, love interests, coworkers, family, friends, etc

      • Thomrade@lemm.ee
        link
        fedilink
        English
        arrow-up
        3
        ·
        5 months ago

        Yeah it’d be a person table, and the relationship table indicating the ids of shipped couples. Do you think there’d need to be a status in the relationship table so we can tombstone exes? Or maybe started and ended date columns for each relationship so we can figure out whose cheating on who. But when about on-off relationships then? How would we model Ross and Rachel?

        • ResoluteCatnap@lemmy.ml
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          5 months ago

          I think wed just need the following

          • rel.id (primary key)
          • rel.user_id (foreign key to person.id)
          • rel.user_id2 (foreign key to person.id)
          • rel.type (type of relationship)
          • rel.start (non null)
          • rel.end

          From there you don’t need a rel.status because you’re not updating this rel.id entry except for the rel.end. if they started dating again later it would be a whole new entry, and then you could query their entire dating history to see if they keep coming back to the same person, dating around, playing the field, etc. Separately there could be a friendship relationship that is tracked so you could if they ended being friends after a breakup.