| (Web-) Design und webbasierte Sprachen Tipps & Tricks, Designabgleich, HTML & Javascript, Flash, ASP, PHP, Perl/CGI... |
Diskussion: Datenbankstruktur Sinnvoll? im Forum (Web-) Design und webbasierte Sprachen, in der Kategorie Web, Network & Multimedia Palace; Anzeige Hallo Habo, ich möchte mir gerade ein kleines Portal zu Übungszwecken der Scriptsprache Php schreiben. Bevor es überhaupt los ...
![]() |
| | #1 (permalink) |
| Registriert seit: 21.10.06 ![]() Likes: 0 | Anzeige Hallo Habo, ich möchte mir gerade ein kleines Portal zu Übungszwecken der Scriptsprache Php schreiben. Bevor es überhaupt los geht mache ich mir gerade Gedanken über die Datenbanstruktur. Dabei soll das Portal folgende Ziele erreichen : Userlogin Userseite einrichten User Nachrichten senden (Wirklich sehr simpel alles) Zur Zeit habe ich folgendes Ergebnis der Datenbankstruktur (siehe Anhang). Mit der Tabelle portal_nachrichten bin ich mir schon im klaren, wie eine Abfrage aussehen könnte. Code: Select nachricht, ip, timestamp From portal_nachrichten from portal_nachrichten Where user_id = x Ich muss ja erstmal aus der portal_user auslesen, welche Id der User gerade in der Tabelle hat und dann suchen - das kann nicht die feine Lösung sein ;-) Ich hab schon mal mit Inner Joins gearbeiter, frage muss ich hier einen Inner Join machen? Finde die nämlich ziemlich lästig Ist meine DB Struktur überhaupt sinnvoll? LG, Weau :) Geändert von weau (17.03.11 um 15:04 Uhr) |
| | |
| | #2 (permalink) |
| Moderator ![]() | Sonderlich schlüssig wirkt mir das noch nicht. User: Die hier enthaltenen Daten passen einigermaßen. "details" könnte man ggf. noch aufsplitten, kommt drauf an, was du in diesem Feld ablegen willst. Die Nachrichten-ID hat in dieser Tabelle nix zu suchen, das Passwortfeld beinhaltet hoffentlich auch nur einen Hash, und nicht das PW im Klartext. Login: Sollte vielleicht in "Session" umgetauft werden, denn das ist es eigentlich, was du dort ablegen willst. Das Passwort hat hier nix zu suchen, dafür sollte sort sicherlich noch die Session-ID eine Spalte bekommen. Nachrichten: Eine Nachricht braucht mindestens 2 User-IDs als Fremdschlüssel, nämlich Absender und Empfänger. Ansonsten könnte die Tabelle ggf. noch ergänzt werden um einen Nachrichtenbetreff. Zu den Abfragen: Um JOINs kommst du ab einer gewissen Komplexität der Anwendung sowieso nicht herum, ich sehe da aber auch kein Problem drin. |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Warum vergibst du überhaupt so viele "doppelte" ids an Felder? Was soll z.B: "portaluser.nachrichten_id"? Nimm zur Zuordnung doch einfach die eigentliche User-ID (als Foreign Key). Und was bezweckst du damit, Username und Passwort in zwei Tabellen redundant zu Speichern. Ich kann verstehen, dass du Login und Profil trennen willst. Aber da reicht doch die User-ID zu Zuordnung von Datensätzen zwischen der Tabellen. Also ich würde es etwas anders aufziehen: Code: table portal_user =========== userid (Primary Key, auto_incr.) name [Angezeigter Name, z.B: "metax."] email datails bild table portal_login =========== userid [korrelliert zu portal_user.userid] loginname [kann ja != angezeigter Name sein ...] passwort timestamp ip table portal_nachricht ============== nachrichtenid senderid empfaengerid timestamp text Code: z.B: SELECT portal_user.userid as senderid, portal_user.name as sendername, portal_nachricht.timestamp as datum, portal_nachricht.text as text FROM portal_user, portal_nachricht WHERE portal_nachricht.senderid = portal_user.userid AND portal_nachricht.empfaengerid = $userid ORDER BY portal_nachricht.timestamp DESC; mfg, metax.
__________________ Wenn keiner zuschaut, teile ich heimlich durch Null! Meine Homepage: Planet Metax | meine Bilder: DeviantArt | Twitter | |
| | |
| | #4 (permalink) |
| Moderator ![]() Registriert seit: 20.07.05 ![]() ![]() ![]() ![]() ![]() ![]() Likes: 202 | Da es einen Lernzweck hat, würde ich vielleicht erstmal Entity-Relationsship Entwurf empfehlen: http://de.wikipedia.org/wiki/Entity-Relationship-Modell dann setzt du den Entwurf in ein relationales Schema um: http://www-lehre.informatik.uni-osna...pt/node41.html verfeinerst das: http://www-lehre.informatik.uni-osna...pt/node42.html führst eine Normalisierung durch: http://de.wikipedia.org/wiki/Normali...28Datenbank%29 und erst dann fängst du an zu programmieren ![]() Ich weiß, dass es etwas viel auf einmal ist, die Links sind übrigens nur als Beispiele für weitere Suche. Auch ist es ganz nett, einen blick auf http://de.wikipedia.org/wiki/Referen...ntegrit%C3%A4t zu werfen (nicht vom Namen abschrecken lassen). Damit lässt sich z.B sicherstellen, dass nur "sinnvolle" Daten existieren und die Datenbank nicht zugemüllt wird. D.h z.B dass wenn ein User Eintrag aus der Usertabelle gelöscht wird, alle von ihm abhängigen Einträge (z.B in der PM_Tabelle) auch mit entferent werden (durch CASCADE Definition). Das gilt auch für Änderungen in der "Masteratabelle". Umgekehrt lässt sich z.B ein "falscher" Datensatz gar nicht einfügen - z.B eine Nachricht in die PM_Tabelle, wenn die zugehörige User_ID nicht existiert. Es gibt auch die Klausel "check" (nunja, noch nicht bei MySQL) aus den Beispielen sollte auch klar sein, wo ich die Beispiele her hab ;) Auch wenn man auf den ersten Blick sagen würde "Wer braucht das Zeug, ich kanns ja mit PHP umsetzen und alles sicherstellen?!" - die Votreile zeigen sich, wenn man das z.B dynamisch erweiterbar macht, mehrere Programmierer daran arbeiten lässt oder einfach paar Monate später an an dem Code werkelt. Dann hat man keine (oder eher weniger
__________________ Noch mal, für alle Pseudo-Geeks: 1+1=0. -> 10 wäre Überlauf! Selig, wer nichts zu sagen hat und trotzdem schweigt. |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| antivir sinnvoll? | Executor | Linux/UNIX | 16 | 16.08.08 04:08 |
| Verschlüsselung sinnvoll? | Jeefo.Win32 | (In)security allgemein | 3 | 09.01.07 19:03 |
| Datenbankstruktur auslesen? | Didito | Cryptography & Encryption | 1 | 24.09.06 23:12 |
| DTR-Laptops sinnvoll? | JoBbE | Hardware Probleme | 5 | 13.09.05 00:08 |
| Sinnvoll? | fb2001 | Off topic-Zone | 23 | 29.11.01 20:26 |