php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.09.2008, 19:25  
phyton
Gast
 
Beiträge: n/a
Standard [Erledigt] Datenbankdesign: "Freundschaftsnetzwerk"

Hallo php.de Mitglieder!
Ich habe folgendes Problem in PHP: Ich möchte ein sogenanntes "Freundschaftsnetzwerk" aufbauen, d. h. dass der Benutzer andere Benutzer als Freunde speichern und wieder löschen kann, jedoch weiß ich nicht wie ich dies am speichersparendsten in einer Datenbank speichern kann. Das ist meine Idee gewesen: In der Tabelle mit allen Usern (Daten,...) erstelle ich eine neue Spalte, die die Freundschaften beeinhaltet:

friends:
74;20;274;047;103;4;98

Die Zahlen stehen jeweils für die ID des Benutzers. Bei diesem Weg weiß ich jedoch nicht, wie ich die Freundschaften verwalten (Löschen, ändern) kann.



Vielen Dank!

phyton

Geändert von phyton (28.09.2008 um 19:26 Uhr). Grund: Beitrag etwas ungenau
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.09.2008, 21:10  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Mein Tipp: Tus nicht.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 28.09.2008, 22:13  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo phython,

wie ich sehe, hast du das Thema Normalisierung noch nicht gestreift. Abgesehen davon, dass es bereits inflationär viele Networking-Seiten gibt, würde ich die Beziehungen nicht so abbilden. Schau dir mal das Gästebuch-Tutorial unter Adventure PHP Framework - Gaestebuch Tutorial an. Dort wird dargestellt, wie Beziehungen auf Datenbankebene abgebildet werden können. Eine Liste mit separierten IDs in der Datenbank abzulegen ist Unsinn.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Alt 29.09.2008, 20:52  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Was dr.e. damit sagen will dass du die Darstellung in der Datenbank anders machen sollst. Für so einen Zweck verwendet man normalerweise eine Tabelle die die Verbindung speichert.

Du hast also zwei Tabellen, die eine ist User so wie du sie wohl schon hast, die andere ist dann die Tabelle die die Relation darstellt. Sie hat die Felder

id
user_id_a
user_id_b

Jetzt kannst du bei User A die eine ID eintragen, bei B die ID seines Freundes. Somit kannst du alle Freunde von User A auslesen indem du eben alle Einträge abfrägst die die User ID A beinhalten.
Flor1an ist offline   Mit Zitat antworten
Alt 01.10.2008, 08:15  
phyton
Gast
 
Beiträge: n/a
Standard

Danke an alle!
Werde es jetzt so machen wie Flor1an. @nikosch: Ich möchte kein soziales Netzwerk wie schülerVZ, myspace, facebook,... oder so aufbauen!



phyton
  Mit Zitat antworten
Alt 01.10.2008, 15:00  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Mein Kommentar bezog sich darauf, dass der Versuch, den Plan via '74;20;274;047;103;4;98' umzusetzen, daruaf schließen lassen könnte, dass eine solche ANwendung noch etwas zu groß für Dich sein könnte.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 01.10.2008, 19:33  
phyton
Gast
 
Beiträge: n/a
Standard

  Mit Zitat antworten
Alt 01.10.2008, 20:47  
Benutzer
 
Registriert seit: 29.04.2008
Beiträge: 33
myPages
Standard

Moin,

mal eine Frage - auch wenn das Ganze ja im Prinzip gelöst ist. Wie bildet man eigentlich am geschicksten eine bidirektionale Verbindung ab?

Bei Freundschaftsbeziehung ist ja so, dass wenn B ein Freund von A ist, muss A auch ein Freund von B sein. Muss man da dann zwei Einträge für diese Verbindung haben?

Also

friend1 | friend2
A | B
B | A

oder geht das auch intelligenter?

MfG
myPages
__________________
Man braucht drei Dinge im Leben
die Gelassenheit die Dinge hinzunehmen, die man nicht ändern kann,
den Mut die Sachen zu verändern, die man ändern kann,
und die Weisheit zwischen den beiden zu unterscheiden.
myPages ist offline   Mit Zitat antworten
Alt 01.10.2008, 20:54  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.994
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Tja, das ist die Frage der Fragen. Und kommt auf den Kontext an.
- Ist B denn Freund von A, nur weil A sich als Freund von B bezeichnet.
- Wenn ja sollte A | B eigentlich ausreichen, wenn die Software ordentlich arbeitet.
- A | B , B | A bietet die beste Voraussetzung für Kreisreferenzen
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online   Mit Zitat antworten
Alt 01.10.2008, 20:58  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo myPages,

um Beziehungen bidirektional auflösen zu können, solltest du diese auslagern. Hier ist eine Beziehungstabelle eine sehr elegante Möglichkeit. Diese speichert die PKs der beiden in Beziehung stehenden Tabellen. Mit zwei INNER JOINs kannst du kann die Beziehung auflösen.

Hast du beispielsweise Einträge eines Gästebuchs in einer Tabelle und das zugehörige Gästebuch in einer anderen, so kann eine Beziehungstabelle die Einträge zu einem Gästebuch zuordnen. Um nun alle Einträge eines Gästebuchs selektieren zu können, kannst du folgende Abfrage nutzen:

Code:
SELECT entry.EntryID AS ID FROM entry
                    INNER JOIN comp_guestbook_entry ON entry.EntryID = comp_guestbook_entry.EntryID
                    INNER JOIN guestbook ON comp_guestbook_entry.GuestbookID = guestbook.GuestbookID
                    WHERE guestbook.GuestbookID = '123';
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Datenbankdesign mit wiederholung shocky Datenbanken 2 15.01.2007 15:37
Datenbankdesign: Reloaded c-f-g Datenbanken 7 29.07.2006 17:24
[Erledigt] [SQL] Datenbankdesign Datenbanken 5 12.04.2005 08:30
Datenbankdesign für Shop mit unterschiedlichen "Typen&a PHP Tipps 2005 27 20.01.2005 16:06

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
datenbank freundschaftsbeziehungen, datenbank freundschaftsbeziehung, freundschaftsnetzwerk programm, freundschaftsbeziehungen datenbank design, datenbank freunde abbilden, sql freundschaftsnetzwerk, beispiel datenbank freundschaftsbeziehung, freundschaftsbeziehung datenbank, datenbankdesign wann beziehungstabellen, datenbankdesign soziales netzwerk, datenbankdesign shop, freundschaftsbeziehung abbilden, gaestebuch datenbankdesign, bidirektionale beziehung php, 2010 email gästebuch für beziehung, datenbankdesign tutorial, freundschaft auf db abbilden, datenbank entwurf freunde, php code freunde beziehungen, datenbank freunde beziehung

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:32 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum