Hallo,
was MySQL an geht, bin ich Amateur und habe mich aus diesem Grund hier auch angemeldet.
Ich möchte eine Webseite mit einer Mitgliederverwaltung erstellen und bin am Überlegen wie ich die Datenbank sinnvoll aufbaue um nicht später im laufenden Betrieb aus Performance Problemen etwas ändern zu müssen.
Die Nutzer der Webseite sollen sich anmelden können und dann im Mitgliederbereich persönliche Angaben von sich machen können, mit denen für jedes registrierte Mitglied eine Profilseite ausgegeben wird. Für den Mitgliederbereich soll es dann im Anschluss eine Suchfunktion geben.
Meine Überlegungen gehen in Richtung 4 Tabellen.
`member`
id ; AUTO_INCREMENT
userid ; eindeutige ID des Kunden (Unique) – PRIMARY KEY
username
passwort ; verschlüsselt abgelegt
email ; verschlüsselt abgelegt
regdate ; Datum der Registrierung
account_active ; wenn der Account nach Email Bestätigung aktiviert wurde
account_status : werte 1 bis 5 von normales Mitglied -> Supporter -> Adminfunktionen
avatar ; Avatarbild für sein Profil
`member_details`
id ; AUTO_INCREMENT
userid ; eindeutige ID des Kunden (Unique) – PRIMARY KEY
plz ;
wohnort ;
geschlecht ;
geburtsdatum;
text_1 ; Freier Text den das Mitglied schreiben kann.
text_2 ; Freier Text den das Mitglied schreiben kann.
entry_1 ; weitere persönliche Angabe vom Mitglied
entry_2 ; weitere persönliche Angabe vom Mitglied
entry_3 ; weitere persönliche Angabe vom Mitglied
etc. … ich weiß noch nicht welche Angabe ich alle mit rein nehmen werde.
`member_stats`
id ; AUTO_INCREMENT
userid ; eindeutige ID des Kunden (Unique) – PRIMARY KEY
last_login ; letzter Login
profil_hits ; wie oft sein Profil besucht wurde
`member_fotos`
id ; AUTO_INCREMENT
userid ; eindeutige ID des Kunden (Unique) – PRIMARY KEY
filename ; Dateiname
file_checked ; Bild vor dem Freischalten geprüft ?!
Warum diese Aufteilung?
Die Daten in `member` werden so gut wie gar nicht mehr geändert
Die Daten in `member_details` werden ab und zu durch das Mitglied angepasst.
Die Daten in `member_stats` werden regelmäßig häufig durch andere Mitglieder beim Profilbesuch bzw. das System verändert
Ich bin etwas skeptisch was die späteren Suchanfragen betrifft.
Wenn ich auf der Startseite die neusten Mitglieder mit ein wenig Detailangaben anzeigen möchte, müsste ich ja immer `member` mit `member_details` und `member_stats` verknüpft abfragen:
SELECT *
FROM member
INNER JOIN member_details ON member.userid = member_details.userid
INNER JOIN member_stats ON member.userid = member_stats.userid
WHERE `account_active` = '1'
AND last_login != '0'
ORDER BY regdate DESC
LIMIT $limit_start, $limit_ende
Wenn man 10.000 Mitglieder hat, dann braucht doch der Server ewig bis er alle Daten zusammen hat oder nicht?
Was haltet ihr davon? Ist das sinnvoll oder blödsinnig das soweit aufzuteilen?
Ist die Aufteilung so ok und man fragt so was komplett anders ab???
Sollte ich die Datenbank anders aufbauen???
Bin für Anregungen, Hilfe und Kritik dankbar.
was MySQL an geht, bin ich Amateur und habe mich aus diesem Grund hier auch angemeldet.
Ich möchte eine Webseite mit einer Mitgliederverwaltung erstellen und bin am Überlegen wie ich die Datenbank sinnvoll aufbaue um nicht später im laufenden Betrieb aus Performance Problemen etwas ändern zu müssen.
Die Nutzer der Webseite sollen sich anmelden können und dann im Mitgliederbereich persönliche Angaben von sich machen können, mit denen für jedes registrierte Mitglied eine Profilseite ausgegeben wird. Für den Mitgliederbereich soll es dann im Anschluss eine Suchfunktion geben.
Meine Überlegungen gehen in Richtung 4 Tabellen.
`member`
id ; AUTO_INCREMENT
userid ; eindeutige ID des Kunden (Unique) – PRIMARY KEY
username
passwort ; verschlüsselt abgelegt
email ; verschlüsselt abgelegt
regdate ; Datum der Registrierung
account_active ; wenn der Account nach Email Bestätigung aktiviert wurde
account_status : werte 1 bis 5 von normales Mitglied -> Supporter -> Adminfunktionen
avatar ; Avatarbild für sein Profil
`member_details`
id ; AUTO_INCREMENT
userid ; eindeutige ID des Kunden (Unique) – PRIMARY KEY
plz ;
wohnort ;
geschlecht ;
geburtsdatum;
text_1 ; Freier Text den das Mitglied schreiben kann.
text_2 ; Freier Text den das Mitglied schreiben kann.
entry_1 ; weitere persönliche Angabe vom Mitglied
entry_2 ; weitere persönliche Angabe vom Mitglied
entry_3 ; weitere persönliche Angabe vom Mitglied
etc. … ich weiß noch nicht welche Angabe ich alle mit rein nehmen werde.
`member_stats`
id ; AUTO_INCREMENT
userid ; eindeutige ID des Kunden (Unique) – PRIMARY KEY
last_login ; letzter Login
profil_hits ; wie oft sein Profil besucht wurde
`member_fotos`
id ; AUTO_INCREMENT
userid ; eindeutige ID des Kunden (Unique) – PRIMARY KEY
filename ; Dateiname
file_checked ; Bild vor dem Freischalten geprüft ?!
Warum diese Aufteilung?
Die Daten in `member` werden so gut wie gar nicht mehr geändert
Die Daten in `member_details` werden ab und zu durch das Mitglied angepasst.
Die Daten in `member_stats` werden regelmäßig häufig durch andere Mitglieder beim Profilbesuch bzw. das System verändert
Ich bin etwas skeptisch was die späteren Suchanfragen betrifft.
Wenn ich auf der Startseite die neusten Mitglieder mit ein wenig Detailangaben anzeigen möchte, müsste ich ja immer `member` mit `member_details` und `member_stats` verknüpft abfragen:
SELECT *
FROM member
INNER JOIN member_details ON member.userid = member_details.userid
INNER JOIN member_stats ON member.userid = member_stats.userid
WHERE `account_active` = '1'
AND last_login != '0'
ORDER BY regdate DESC
LIMIT $limit_start, $limit_ende
Wenn man 10.000 Mitglieder hat, dann braucht doch der Server ewig bis er alle Daten zusammen hat oder nicht?
Was haltet ihr davon? Ist das sinnvoll oder blödsinnig das soweit aufzuteilen?
Ist die Aufteilung so ok und man fragt so was komplett anders ab???
Sollte ich die Datenbank anders aufbauen???
Bin für Anregungen, Hilfe und Kritik dankbar.