Ihr Ansatz versucht, dem Feld "ItemId" mehrere Bedeutungen zuzuweisen, die zu den Problemen führen, denen Sie begegnen. Wenn ich "9500" in diesem Bereich sehen würde, woher soll ich wissen, was das bedeutet?
Ich würde vorschlagen, das ItemId-Feld fallen zu lassen und "Zebrastreifen" -Tabellen zwischen den Stimmen und den anderen Entitäten zu erstellen.
Zum Beispiel Ihre Entitäten:
+-----------+
| Articles |
+-----------+
| ArticleId | PK
| ~ snip ~ |
+-----------+
+-----------+
| Posts |
+-----------+
| PostId | PK
| ~ snip ~ |
+-----------+
... etc ....
Ihre Stimmen Tabelle:
+-----------+
| Votes |
+-----------+
| VoteId | PK
| ~ snip ~ |
+-----------+
Ihre "Zebrastreifen" Tabellen:
+--------------+
| ArticleVotes |
+--------------+
| ArticleId | PK, FK to Articles
| VoteId | PK, FK to Votes
+--------------+
+--------------+
| PostVotes |
+--------------+
| PostId | PK, FK to Posts
| VoteId | PK, FK to Votes
+--------------+
Beachten Sie, dass in Ihrem Zebrastreifen Tabellen, würden Sie einen zusammengesetzten Primärschlüssel erstellen, der aus den FK-Referenzen zu den entsprechenden Entitäten besteht, wodurch die Eindeutigkeit sichergestellt wird.
Meiner Erfahrung nach ist dies ein geeigneter normalisierter Ansatz für die von Ihnen beschriebene Domäne.
Bei der Abfrage, um die Stimmen für die Artikel (zum Beispiel) einfach INNER JOIN Artikel durch ArticleVotes zu Stimmen. Um alle Stimmen zu erhalten, fragen Sie einfach nach Abstimmungen.
Darüber hinaus würde ich vorschlagen, eine IPAddresses-Tabelle und FKing zu diesem in Ihrer Tabelle "Votes" zu erstellen, um die Redundanz zu reduzieren.
Muss es diese ID-Spalte sein, die einzigartig ist? Könnten Sie nicht auch eine Spalte für den Typ haben (die angibt, aus welcher Tabelle er sein sollte) und es sich um eine eindeutige Kombination handelt? – Bridge
Sie haben Recht ... aber ich dachte an die Auswirkungen der Leistung, wenn ich die Abfrage machen werde, um alle Stimmen eines Artikels zu bekommen –
Versuchen Sie, Stimmen auf eins pro Element zu begrenzen, oder sind alle Elemente einzigartig? – HABO