I’m a tech interested guy. I’ve touched SQL once or twice, but wasn’t able to really make sense of it. That combined with not having a practical use leaves SQL as largely a black box in my mind (though I am somewhat familiar with technical concepts in databasing).

With that, I keep seeing [pic related] as proof that Elon Musk doesn’t understand SQL.

Can someone give me a technical explanation for how one would come to that conclusion? I’d love if you could pass technical documentation for that.

  • halcyonloon@midwest.social
    link
    fedilink
    English
    arrow-up
    21
    ·
    6 days ago

    Take this with a grain of salt as I’m not a dev, but do work on CMS reporting for a health information tech company. Depending on how the database is designed an SSN could appear in multiple tables.

    In my experience reduplication happens as part of generating a report so that all relevant data related to a key and scope of the report can be gathered from the various tables.

    • DahGangalang@infosec.pubOP
      link
      fedilink
      arrow-up
      18
      ·
      edit-2
      6 days ago

      A given SSN appearing in multiple tables actually makes sense. To someone not familiar with SQL (i.e. at about my level of understanding), I could see that being misinterpreted as having multiple SSN repeated “in the database”.

      Of all the comments ao far, I find yours the most compelling.

      • Barbarian@sh.itjust.works
        link
        fedilink
        arrow-up
        11
        ·
        edit-2
        6 days ago

        Theoretically, yeah, that’s one solution. The more reasonable thing to do would be to use the foreign key though. So, for example:

        SSN_Table

        ID | SSN | Other info

        Other_Table

        ID | SSN_ID | Other info

        When you want to connect them to have both sets of info, it’d be the following:

        SELECT * FROM SSN_Table JOIN Other_Table ON SSN_Table.ID = Other_Table.SSN_ID

        EDIT: Oh, just to clear up any confusion, the SSN_ID in this simple example is not the SSN itself. To access that in this example query, it’d by SSN_Table.SSN

        • DahGangalang@infosec.pubOP
          link
          fedilink
          arrow-up
          2
          ·
          6 days ago

          Yeah, databases are complicated and make my head hurt. Glancing through resources from other comments, I’m realizing I know next to nothing about database optimization. Like, my gut reaction to your comment is that it seems like unnecessary overhead to have that data across two tables - but if one sub-dept didn’t need access to the raw SSN, but did need access to less personal data, j could see those stored in separate tables.

          But anyway, you’re helping clear things up for me. I really appreciate the pseudo code level example.

          • Barbarian@sh.itjust.works
            link
            fedilink
            arrow-up
            5
            ·
            edit-2
            6 days ago

            It’s necessary to split it out into different tables if you have a one-to-many relationship. Let’s say you have a list of driver licenses the person has had over the years, for example. Then you’d need the second table. So something like this:

            SSN_Table

            ID | SSN | Other info

            Driver_License_Table

            ID | SSN_ID | Issue_Date | Expiry_Date | Other_Info

            Then you could do something like pull up a person’s latest driver’s license, or list all the ones they had, or pull up the SSN associated with that license.

            • Arcka@midwest.social
              link
              fedilink
              English
              arrow-up
              2
              ·
              5 days ago

              I think a likely scenario would be for name changes, such as taking your partner’s surname after marriage.

    • Ephera@lemmy.ml
      link
      fedilink
      English
      arrow-up
      6
      ·
      6 days ago

      The SSN is likely to appear in multiple tables, because they will reference a central table that ties it all together. This central table will likely only contain the SSN, the birth date (from what others have been saying), as well as potentially first and last name. In this table, the entries have to be unique.
      But then you might have another table, like a table listing all the physical exams, which has the SSN to be able to link it to the person’s name, but ultimately just adds more information to this one person. It does not duplicate the SSN in a way that would be bad.

    • snooggums@lemmy.world
      link
      fedilink
      English
      arrow-up
      6
      ·
      6 days ago

      It is common for long lived databases with a rotating cast of devs to use different formats in different tables as well! One might have it as a string, one might have it as a number, and the other might have it with hyphens in the same database.

      Hell, I work in a state agency and one of our older databases has a dozen tables with databases.

      • One has the whole thing as a long int: 222333444
      • One has the whole thing as a string: 2223334444 (which of course can’t be directly compared to the one that is a long int…)
      • One has separate fields for area code and the rest with a hyphen: 222 and 333-4444
      • One has the whole thing with parenthesis, a space, and a hyphen as a string: (222) 333-4444

      The main reason for the discrepancy is not looking at what was used before or not understanding that they can always change the formatting when displayed so they don’t need to include the parenthesis or hyphens in the database itself.