Frage

Ich bin neu in der Datenbankstruktur. Ich versuche, eine App zu erstellen, mit der Benutzer wie bestimmte Eingaben erlaubt, aber ich möchte in der Lage sein mag, um Benutzer zu binden, so dass ich die Visuals vor / nach dergleichen Aktion ändern können.

ich glaube, von der Forschung, dass ich ein ‚Einträge‘ habe und ‚Benutzer‘ Tisch und dann einen ‚mag‘ Tisch bindet die beide zueinander stehen.

Das einzige, was ich bin nicht sicher ist, wenn immer und der Inhalt angezeigt wird ... wie würde ich die Abfragen schreiben? Wenn ich Abfrage für alle Einträge ich brauche, kann ich dann zurückgehen und jeweils einzeln abfragen, um zu sehen, ob es eine hat wie für den aktuellen Benutzer an sie gebunden? Das scheint wie könnte es ein kostspieliger Vorgang sein. Gibt es eine effizientere Art und Weise?

Hope, das macht Sinn, Danke.

War es hilfreich?

Lösung

Ich glaube Ihnen, die richtige Datenbank-Design im Sinn haben. Soweit Abfragen betroffen sind, übernehmen Tabellen als solche:

Nutzer

ID | Name
1  | Bob
2  | Sally

Einträge

ID | Name
1  | Red
2  | Blue
3  | Yellow

Was gefaellt

UserID | EntryID
1      | 1
1      | 2
2      | 2
2      | 3

So können wir sagen, Bob mag Rot und Blau, während Sally Blau und Gelb mag. So eine Abfrage alle Einträge abgerufen werden, sowie ein Indikator dessen, was Bob Gleichen wäre:

SELECT 
e.ID,
e.Name,
l.UserID
FROM Entries e LEFT JOIN Likes l ON l.EntryID = e.ID
WHERE l.UserID = 1 -- Bob's User ID
ORDER BY e.Name

Dies würde zurückkehren

ID | Name   | UserID
2  | Blue   | 1
1  | Red    | NULL
3  | Yellow | 1

Die UserID Spalte zeigt an, ob Bob den Eintrag gefällt oder nicht - ein NULL ist Nein und ein Wert ist Ja.

Andere Tipps

Angenommen, Sie eine Tabelle Einträge mit einer Spalte ENTITY_ID haben (und was sonst speichern Sie über die juristische Person) und eine zweite Tabelle UserLikes, dass die Spalten user_id und ENTITY_ID enthält, würden Sie wie folgt vor:

 SELECT Entries.col1, Entries.col1 . . ., UserLikes.user_id
     FROM Entries LEFT OUTER JOIN UserLikes ON 
         Entries.entity_id = UserLikes.entity_id
     WHERE UserLikes.user_id = :user_id
         AND Entity.col_whatever = :whatever

In diesem Beispiel Entries.col1, Entries.col2. . . ist die Liste der Spalten, die Sie über die Einträge zurück bekommen möchten. Der: user_id ist ein Parameter, der die ID des Benutzers enthält, die Sie gerade versuchen, Einträge angezeigt werden für. Und die letzte Zeile im Stehen für was auch immer Einschränkungen Sie wollen auf die Einträge setzen, werden zurückgegeben.

Diese Abfrage wird Ihnen eine Zeile für jeden Eintrag Sie gesucht haben. Sie können den Wert überprüfen, die zurückgegebene Spalte user_id. Wenn es NULL dann wurde es vom Benutzer nicht mag, wenn es die Benutzer-ID enthält, durch den Anwender gemocht wurde.

Ich denke, u die Einträge abrufen können und Abfrage der Tabelle zur gleichen Zeit mag zu erhalten, wenn der aktuelle Benutzer den Eintrag mag eine gespeicherte Prozedur ausgeführt wird. So u den Wert des Satzes von Daten steuern kann, die von der Abfrage beispielsweise Rückkehr eine colum für den Eintrag Text und einen boolean Spalts wertet die aktuellen Benutzer mögen ... Auf diese Weise zurückgegeben werden Sie zumindest ein Parameter für die gespeicherte Prozedur um anzuzeigen, wer der aktuelle Benutzer

Ich hoffe, dass diese Idee Hilfe u ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top