2017-02-13 8 views
0

Ich baue eine Website, die auch ein Forum enthält. Der Teil, den ich vermisse, ist der "Post View Counter", aber ich bin mir nicht sicher, welchen Weg ich gehen soll.Was in der Datenbank den meisten Platz einnimmt

Ich habe 2 Möglichkeiten, wie ich über die Verwendung in meinem Kopf dachte, aber was am besten wäre, und würde in der database

Methode 1 ein Unterschied in der Space jede Option Gebrauch da sein:

PostId | UserId's (separated by, and max 200 users per row) 
----------------------------------- 
    1 | 1, 2, 4, 5, 9, 10, 220 
    2 | 1, 2, 4, 5, 9, 10, 220 

Methode:

PostId | UserId 
----------------------------------- 
    1 | 1 
    1 | 2 
    1 | 4 
    1 | 5 
    1 | 9 
    1 | 10 
    1 | 220 

Haben diese zwei Methoden nehmen gleicher Größe in der Datenbank? Oder würde es eine Option geben, die viel besser wäre, die Daten darüber zu speichern, welche WHO welchen Beitrag gesehen hat?

+0

Methode 1 wäre eine Datenbank, die normalisiert werden muss. Lesen Sie hier mehr: https://en.wikipedia.org/wiki/Database_normalisation So Methode 2 ist ein guter Weg, Methode 1 ist ein schlechter Weg. – adistoe

+0

Methode 2 macht viel mehr Sinn als Methode 1 –

+0

Sie verwenden eine relationale Datenbank, wenn Sie ihre Funktionen wünschen: Einfügen, Aktualisieren, Suchen, Sortieren, Erzwingen referenzieller Integrität, Umgang mit Multi-User-Umgebungen ... Verwenden Sie es als dumme Speicherung von Rohdaten Bytes ist eine Art von Verschwendung. –

Antwort

1

Methode 2 ist besser, besonders, wenn Sie ein „Lese“ Status für jeden Benutzer behalten möchten, die in diesem Fall würde ich für diese Tabelle mit postId und userId als Primärschlüssel vorschlagen, so dass Sie einen einzigen postId nur halten zu userId Reihe. Der Primärschlüssel platziert einen Index in der Tabelle. Wenn Sie also eine SELECT ausführen möchten, um herauszufinden, ob ein Benutzer diesen Beitrag bereits gelesen hat, wird es sehr schnell gehen.

Beachten Sie, dass dies nicht zulassen, dass Sie die Anzahl der Ansichten des Beitrags zählen, und dafür würde ich einfach ein viewCount Feld auf den Beitrag selbst setzen, und jede Ansicht des Beitrags erhöht diesen Wert, unabhängig davon, ob Benutzer hat es bereits in der Vergangenheit gesehen.

Verwandte Themen