php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.06.2011, 12:46  
Neuer Benutzer
 
Registriert seit: 30.11.2010
Beiträge: 4
PHP-Kenntnisse:
Anfänger
_knut_ befindet sich auf einem aufstrebenden Ast
Standard Frage zu Datenbankmodlierung

Hallo

Ich würde gerne wissen wie man folgende Anforderung sauber umsetzt:

3 Personengruppen (A,B,C) die jeweils unterschiedliche Tabellenfelder benötigen, jedoch auch einige gemeinsame haben.
Die gemeinsamen könnte ich nun in eine Tabelle "Person" auslagern

Tabelle1: "A"
Feld1: A_ID Primarykey
Feld2: P_ID Foreign key
Feld3: irgend welche Eigenschaften
Feld4: irgend welche Eigenschaften
Feld5: irgend welche Eigenschaften

Tabelle2: "B"
Feld1: B_ID Primarykey
Feld2: P_ID Foreign key
Feld3: irgend welche Eigenschaften
Feld4: irgend welche Eigenschaften
Feld5: irgend welche Eigenschaften

Tabelle3: "C"
Feld1: C_ID Primarykey
Feld2: P_ID Foreign key
Feld3: irgend welche Eigenschaften
Feld4: irgend welche Eigenschaften
Feld5: irgend welche Eigenschaften

Tabelle4: "Person"
Feld1: P_ID Primarykey
Feld2: Name
Feld3: email unique
Feld4 Passwort

Nun stellt sich mir aber das Problem, wenn ich über "Person" email und passwort abfrage, wie kann ich feststellen zu welcher Tabelle A,B,C die Person gehört? Natürlich könnte ich jede Tabelle Abfragen ob ein Eintrag vorhanden ist, das ist aber sicher nicht sauber.
Vor allem was ist, wenn es in 2 Tabellen passende Einträge gibt.

Alternativ könnte ich auch die Personen Tabelle so gestalten:
Tabelle4: "Person"
Feld1: P_ID Primarykey
Feld2: A_ID Foreign key
Feld3: B_ID Foreign key
Feld4: C_ID Foreign key
Feld5: Name
Feld6: email unique
Feld7 Passwort

Mit dieser Tabelle könnte ich abfragen ob A,B oder C befüllt ist und dann von der entsprechenden Tabelle die Daten holen.

Was sagt Ihr dazu, sieht für mich beides unsauber aus.

Danke für Eure Mühe

lg Lukas
_knut_ ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 04.06.2011, 12:49  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von _knut_ Beitrag anzeigen
3 Personengruppen (A,B,C) die jeweils unterschiedliche Tabellenfelder benötigen
Also jeweils ein bestimmter Typ von Person.

Zitat:
Nun stellt sich mir aber das Problem, wenn ich über "Person" email und passwort abfrage, wie kann ich feststellen zu welcher Tabelle A,B,C die Person gehört?
Den Typ mit in die Person-Tabelle eintragen.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 04.06.2011, 13:13  
Neuer Benutzer
 
Registriert seit: 30.11.2010
Beiträge: 4
PHP-Kenntnisse:
Anfänger
_knut_ befindet sich auf einem aufstrebenden Ast
Standard

Hallo

Danke für deine Antwort

Hmm, vermutlich hast du recht.
Nur steht dann diese Information nicht doppelt in der DB?

Tabelle1: "A"
Feld1: A_ID Primarykey
Feld2: P_ID Foreign key
Feld3: irgend welche Eigenschaften
Feld4: irgend welche Eigenschaften
Feld5: irgend welche Eigenschaften

Tabelle4: "Person"
Feld1: P_ID Primarykey
Feld2: Typ
Feld5: Name
Feld6: email unique
Feld7 Passwort

Danke

lg Lukas
_knut_ ist offline   Mit Zitat antworten
Alt 05.06.2011, 14:19  
Erfahrener Benutzer
 
Registriert seit: 23.08.2010
Beiträge: 495
PHP-Kenntnisse:
Fortgeschritten
mimomamu sorgt für eine eindrucksvolle Atmosphäremimomamu sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von _knut_ Beitrag anzeigen
Vor allem was ist, wenn es in 2 Tabellen passende Einträge gibt.
Dann hast du ein Bug in deinem Quellcode und es macht keinen Sinn, das Programm noch weiter auszuführen solange dieser Bug nicht behoben wurde.

Vielleicht hilft dir Vererbung und Polymorphie mit relationalen Datenbanken.
__________________
Meinungen, die ich geäußert habe, sind nicht notwendigerweise meine eigenen. Abweichungen von der deutschen Rechtschreibung unterliegen dem Urheberrecht, dürfen aber unter den Bedingungen von verwendet werden

Geändert von mimomamu (05.06.2011 um 14:40 Uhr).
mimomamu ist offline   Mit Zitat antworten
Alt 06.06.2011, 10:15  
Erfahrener Benutzer
 
Registriert seit: 02.09.2009
Beiträge: 1.019
PHP-Kenntnisse:
Fortgeschritten
mquadrat befindet sich auf einem aufstrebenden Ast
Standard

Das Typenfeld und den Fremdschlüssel würde ich jetzt nicht unbedingt als redundant einstufen.
__________________
Wir suchen PHP Entwickler (Vollzeit) im Raum Darmstadt / Rhein-Main. Infos via E-Mail mueller@new-frontiers.de
mquadrat ist offline   Mit Zitat antworten
Alt 06.06.2011, 10:51  
Erfahrener Benutzer
 
Registriert seit: 01.06.2008
Beiträge: 179
PHP-Kenntnisse:
Fortgeschritten
Daniel befindet sich auf einem aufstrebenden Ast
Daniel eine Nachricht über ICQ schicken
Standard

Ich würde es generell so lösen:

Eine Tabelle mit den gemeinsamen Eigenschaften aller User.

Eine Tabelle mit weiteren Eigenschaften ebenfalls für alle User:

ID - PK
Property_ID - FK
Value

Dazu noch eine weitere Tabelle mit den möglichen Properties und eine Zuordnung, welche Personengruppen es gibt und welche Personengruppen welche Properties haben dürfen.
Daniel 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
Eine Frage zum guten Code-Layout SilentSight JavaScript, Ajax und mehr 3 14.07.2010 09:18
[Erledigt] Frage zu JOIN Befehl und dem Auslesen desselben apo PHP Tipps 2010 11 13.06.2010 19:32
[PDO] Frage zur Portabilität freq.9 PHP-Fortgeschrittene 2 29.07.2005 13:28
[Erledigt] frage PHP Tipps 2005-2 9 15.06.2005 13:22
.htaccess - Frage Stümper PHP Tipps 2005 11 30.05.2005 11:56
Performence Frage PHP-Fortgeschrittene 10 06.05.2005 19:00
Frage zu einem Editformular PHP Tipps 2005 3 25.04.2005 14:58
Frage: gibt es bei PHP sowas wie target="_blank" PHP Tipps 2005 6 20.04.2005 06:27
mal ne Frage PHP Tipps 2005 7 14.04.2005 09:46
Technische Frage zur Realisation einer Online-Umfrage Stefano PHP Tipps 2005 5 16.03.2005 17:39
Frage zu einer Liste? HTML, Usability und Barrierefreiheit 2 15.02.2005 16:56
Hallo und Frage zu dynamischer Veränderung in Textfeldern. PHP Tipps 2004-2 2 27.12.2004 22:29
[Erledigt] Frage zur Funkrionen? PHP Tipps 2004-2 10 01.12.2004 09:42
Kurze Frage an die Php Profis PHP Tipps 2004-2 11 24.11.2004 17:38
Frage zur Formatierung von Text obi PHP Tipps 2004 1 03.11.2004 13:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
obi

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:54 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