PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Hilfe bei Datenbanklogik? (http://www.selfphp.de/forum/showthread.php?t=25333)

Repac3r 17.07.2014 18:41:31

Hilfe bei Datenbanklogik?
 
Hey,

für ein kleines Projekt brauche ich eine Datenbank mit mehreren Tabellen.
Geplant habe ich eine Tabelle für eine Userliste (PW, User, @), eine Tabelle pro User für ich sag mal "Informationsordner" und nochmals mehrere Pro User für "Informationen", bisschen verwirrend, abeir ich versuchs mal zu erklären.

Grundsätzlich geht es bei diesem Projekt um ein/e Programm/App zum synchronisieren von "Informationen".
Jeder User kann mehrere Geräte (Pc, Handy, Table o.ä) hinzufügen, all diese Geräte sind in einer Tabelle zugeordnet("Informationsordner"), diese Tabelle ist wiederum dem Nutzer zugeordnet. Dann gibt es pro Gerät eine weitere Tabelle (natürlich pro user), dort stehen dann die endgültigen Informationen (User->Geräteliste->Gerät->Infos). Also existieren mindestens drei Tabellen pro User, wobei die Userliste insgesamt natürlich nur einmal existiert.

Tabellen sind wie folgt aufgebaut () == Datentyp:

Userliste (primär, einmalig):
ID (ID)| User (string) | Password (Hash) | Email (string)

Geräteliste (pro User einmal) Tabellenname = "der-username"_devices:
ID (ID) | Devicename (string) | Devicetype (string)

Device (pro User mehrmals) Tabellenname = "der-username"_"Devicename":
ID (ID) ? | Info (string) | Date (Date Time)

So ungefähr wäre mein Konzept, jetzt möchte ich natürlich eine gewissen Abhängigkeit zwischen den Tabellen haben bzw. Einträgen, wie bekomme ich das hin?

Wo sieht überhaupt mein Konzept aus, oder kann man das in die Tonne hauen, mögliche Verbesserungsvorschläge?


Wäre nett, wenn ihr mir dazu Ratschläge geben könntet ;)

Lg marcel

pguser 17.07.2014 18:50:21

AW: Hilfe bei Datenbanklogik?
 
Zitat:

Zitat von Repac3r (Beitrag 146719)
Also existieren mindestens drei Tabellen pro User,

So ungefähr wäre mein Konzept,

Wo sieht überhaupt mein Konzept aus, oder kann man das in die Tonne hauen, mögliche Verbesserungsvorschläge?


Ja, hau es in die Tonne.

Repac3r 17.07.2014 18:52:14

AW: Hilfe bei Datenbanklogik?
 
Zitat:

Zitat von pguser (Beitrag 146720)
Ja, hau es in die Tonne.

Dann begründe bitte deine Aussage und nen Verbesserungsvorschlag wäre auch nett ;)

Lg marcel

pguser 17.07.2014 19:14:25

AW: Hilfe bei Datenbanklogik?
 
Zitat:

Zitat von Repac3r (Beitrag 146721)
Dann begründe bitte deine Aussage und nen Verbesserungsvorschlag wäre auch nett ;)

Lg marcel

Den Grund nanntest Du schon, ich hab es für Dich schon passend stehen gelassen.

pguser 17.07.2014 19:18:59

AW: Hilfe bei Datenbanklogik?
 
Zitat:

Zitat von Repac3r (Beitrag 146721)
nen Verbesserungsvorschlag wäre auch nett ;)

Lg marcel

Dieser Punkt ist einfach und als Normalisierung bekannt.

Repac3r 17.07.2014 19:31:28

AW: Hilfe bei Datenbanklogik?
 
Zitat:

Zitat von pguser (Beitrag 146723)
Dieser Punkt ist einfach und als Normalisierung bekannt.

Würdest du mir evtl. ne grobe Vorlage oder zumindest den Tipp geben, wie ich das Konzept umgestalten könnte?

Lg marcel

pguser 17.07.2014 19:37:52

AW: Hilfe bei Datenbanklogik?
 
Zitat:

Zitat von Repac3r (Beitrag 146724)
Würdest du mir evtl. ne grobe Vorlage oder zumindest den Tipp geben, wie ich das Konzept umgestalten könnte?

Lg marcel

Indem Du in Deiner Devicetabelle oder was auch immer das sein soll mit einen Foreign Key auf den User einträgst. Dein Konzept mit Geräten und Devices ist mir noch nicht ganz klar und auch egal, aber wenn ich sehe, daß je User das DB-Design geändert werden muß und der User-Name Bestandteil des Tabellennames ist halte ich von solchen Konzepten prinzipiell nur eines: Abstand.

Repac3r 17.07.2014 19:53:38

AW: Hilfe bei Datenbanklogik?
 
Okay die Sache mit der Normalisierung lese ich mal hier durch: http://www.php-kurs.com/normalisierung.htm Das mit dem Foregin Key lese ich mir auch gleich nochmal durch.

Hier nochmal das ungefähre Konzept, bzw wie die Daten aufgeteilt sind:

Ich habe ein Programm, ich kann mich mit diesen anmelden und verschiedene Geräte hinzufügen z.b ein weiterer Pc, ein Handy... Zu jedem Gerät kann ich gewissen Infos hinterlegen, die mit dem Gerät selber nichts zu tun hat, sondern eher sowas wie ein Notizblock.

Hier mal als Beispiel:

User1 -> schaut in die Geräteliste -> wählt Pc1 aus -> hat zugriff zu info1, info2...
-> schaut nochmals rein -> wählt handy2 aus -> hat zugriff zu Info1...info3

So ungefähr kann man sich das Vorstellen, mehr möchte ich dazu nicht sagen.

Und nochmals jeder User hat eine Geräteliste in dieser Geräteliste stehen Geräte in den den Geräten stehen die jeweiligen Informationen.

Lg marcel

Repac3r 18.07.2014 00:51:16

AW: Hilfe bei Datenbanklogik?
 
Hey schönen Abend,

erstmal sorry für den Doppelpost.

Habe mich jetzt ein bisschen in die Normalisierung eingelesen und dabei ist dieser Entwurf entstanden. (Konnte Grafikmäßig nicht viel machen, da ich es am Ipad erstellt habe^^)
Link zum Bild

Habe farblich versucht darzustellen, wie die Tabellen untereinander Verknüpft sind.
Bei diesem Konzept existieren nur 4 Tabellen für alle User.
Das einzige bei dem ich denke, das es falsch ist, dass ich in der Infoliste nochmals die UserID implementiert habe, obwohl diese schon in der Geräteliste implementiert ist. Eventuell könnte man dann ja direkt den User aus der Geräteliste nehmen (Geräteliste.Userliste.ID)?

Was meint ihr dazu, sieht man eine Verbesserung zum ersten Post, gibt es Verbesserungsvorschläge?

Wäre nett, wenn da jemand kurz drüber schauen könnte.

Lg marcel

pguser 18.07.2014 07:59:42

AW: Hilfe bei Datenbanklogik?
 
Zitat:

Zitat von Repac3r (Beitrag 146729)

Habe farblich versucht darzustellen, wie die Tabellen untereinander Verknüpft sind.
Bei diesem Konzept existieren nur 4 Tabellen für alle User.

Was man bei solchen Pinseleien halt nicht sieht ist, ob da korrekt Primary und Foreign Key verwendet werden. Ein CREATE TABLE wäre da hilfreicher.

Zitat:

Das einzige bei dem ich denke, das es falsch ist, dass ich in der Infoliste nochmals die UserID implementiert habe, obwohl diese schon in der Geräteliste implementiert ist. Eventuell könnte man dann ja direkt den User aus der Geräteliste nehmen (Geräteliste.Userliste.ID)?
ACK.


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:11:22 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.