Frage

Ich brauche ein Skript zu erstellen, wo jemand eine Öffnung für eine Position abgeben wird, und wer berechtigt ist, wird die Öffnung aber jeden sehen, wer nicht (oder entscheidet sich aus) ist die Öffnung nicht sehen. So zwei Menschen auf die gleiche Seite gehen und unterschiedliche Inhalte sehen, einige möglicherweise die gleiche, etwas völlig einzigartig. Ich bin mir nicht sicher, dass die beste Art und Weise, dass die Daten in einer MySQL-DB / Tabelle zu ordnen.

Zum Beispiel, ich könnte es durch die Entsendung angeordnet haben, aber das würde aussehen Art wie:

  PostID   VisibleTo
 PostingA    user1,user2

Und das scheint falsch (den CSV-Stil in der Spalte). Oder ich könnte mit von Person gehen:

User   VisiblePosts

user1 posting1, posting2

Aber es ist das gleiche Problem. Gibt es eine Möglichkeit die Benutzer des einzigartigen, die Entsendung einzigartig zu machen, und haben sie nur verbinden, in dem sie übereinstimmen?

ist die Entscheidung zunächst, indem Sie eine Reihe von Anfragen an einen anderen Satz von Tabellen aus, aber sobald das ausgeführt wird, scheint es ineffizient, dass einige Stück Code wieder laufen zu lassen und wieder, wenn es nicht, nachdem der Benutzer Beiträge ändern die Position.

... Am zweiten Gedanken, es könnte sich ändern, aber wenn wir sie nicht davon ausgehen, (da es unwahrscheinlich ist, und so wenig Konsequenz, wenn ein Benutzer etwas sieht, dass sie nicht mehr kommen für), ist es ein Standard Lösung für dieses Szenario?

War es hilfreich?

Lösung

Dies ist ein many-to-many-Beziehung oder n. M Beziehung

Sie würde eine zusätzliche Tabelle erstellen, sagen PostVisibility, mit einer Spalte PostID und UserID. Wenn eine Kombination von PostID und UserID in der Tabelle vorhanden ist, dass Post ist sichtbar für den Benutzer.

Andere Tipps

Drei Tische ...

Benutzer: [Benutzeridentifikation] [OtherField]

Beitrag: [PostID] [OtherFields]

UserPost: [Benutzeridentifikation] [PostID]

User.UserId UserPost.UserId tritt, Post.PostId schließt sich an UserPost.PostId

Dann die Tabelle UserPost nachzuschlagen, zu Post AG zusammen, wenn Sie auswählen, welche Beiträge zeigen

Edit: Sorry, ich glaube, Sie in der Veröffentlichung Platz-Begriffe sprechen, die viele-zu-viele sind. Ich war in Bezug auf die Posting einen "Blick Rechte" terms of nachgedacht, die eine Eins-zu-viele ist.

Es sei denn, ich bin etwas fehlt, das ist eine Eins-zu-viele-Situation, die zwei Tabellen benötigt. Z. B. hat jeder Eintrag n Benutzer, die sie sehen können. Buchungen sind einzigartig für einen einzelnen Benutzer, so brauchen Sie nicht das Gegenteil zu tun.

  • PostingTable mit Veröffentlicher (und anderen Daten)

  • PostingVisibilityTable mit Veröffentlicher und Benutzer-ID

  • Usertable mit UserID und Benutzerdaten

Erstellen Sie die Nachrichten unabhängig von ihrer Sichtbarkeit Rechte, und dann separat hinzufügen / entfernen Veröffentlicher / UserID Paare gegen die Sichtbarkeit Tabelle.

Um alle Nachrichten auszuwählen sichtbar für den aktuellen Benutzer:

SELECT * FROM PostingTable A INNER JOIN PostingVisibilityTable B ON A.PostingID = B.PostingID WHERE B.UserID = "currentUserID"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top