<div dir="ltr">Hi<br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Aug 11, 2017 at 4:19 AM, Joshua Root <span dir="ltr"><<a href="mailto:jmr@macports.org" target="_blank">jmr@macports.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">On 2017-8-11 03:41 , Bradley Giesbrecht wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
I think Josh is referring to 3NF normalization (third normal form). I don’t think this use case warrants this complexity. I think it is fine for two snapshot id’s to reference the same port+variant combination. When a snapshot id is deleted, cascade delete.<br>
</blockquote>
<br></span>
Again I'm not sure how this differs from what I wrote. A snapshot contains any number of ports, and a port can be in any number of snapshots.<br></blockquote><div><br></div><div>I tried to clear this in my other mail.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Don't worry about having a completely textbook normalised DB, but do avoid replicating large amounts of the data. </blockquote><div><br></div><div>Sure.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">And TBH a join query would be one of the simplest parts of all this...<br></blockquote><div><br></div><div>I started with a join query actually. Something like this,</div><div><pre style="color:rgb(0,0,0);word-wrap:break-word;white-space:pre-wrap"><pre style="word-wrap:break-word;white-space:pre-wrap">    char* query = "SELECT port_name, requested, variant_name, variant_sign "
        "FROM registry.snapshots "
        "INNER JOIN "
        "registry.snapshot_ports ON "
        "<a href="http://snapshots.id">snapshots.id</a>=snapshot_ports.snapshots_id "
        "LEFT JOIN "
        "registry.snapshot_port_variants ON "
        "<a href="http://snapshot_ports.id">snapshot_ports.id</a>=snapshot_port_variants.snapshot_ports_id"
        "WHERE <a href="http://snapshots.id">snapshots.id</a>=?";</pre></pre></div></div>But then I was having a hard time passing the result to Tcl without a snapshot struct. And if there is a need for reg_snapshot, then need for methods as well to operate on it. So, I separated the SQL functions to fetch ports first and then variants.<br></div><div class="gmail_extra"><br></div><div class="gmail_extra">But, having said this all, now I think I could have solved this with JOIN query as well. All these ideas keep coming to me, the longer I spend my time.</div><div class="gmail_extra"><br></div><div class="gmail_extra">I can really use an idea on workflow here.</div><div class="gmail_extra"><br></div><div class="gmail_extra">- Umesh </div></div>