php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 05.02.2012, 09:13  
archer42
Gast
 
Beiträge: n/a
Standard Tabellen Frage

Hallo,

ich bin gerade dabei eine Datenbank Struktur zu entwerfen bin aber noch unsicher, wie ich Benutzer/Kunden verwalte:

1. Benutzer und Kunden getrennt
Vorteil: Man kann die einzelnen Gruppen besser verwalten, wenn man direkt mit der Datenbank arbeitet und muss nicht immer die Benutzer rauswühlen
Nachteil:
Ich benötige sehr viele Tabellen (user, user_meta, user_groups, customers, customers_address, customers_phone,....)

2. Benutzer und Kunden in einer Tabelle
Vorteil: Man kann die Verwaltung der Daten zentralisieren, hat weniger Tabellen
Nachteil: Man vermischt ver. Thematiken


Ich tendiere persönlich zu Ersterem.

Was ist eure Meinung?
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 05.02.2012, 10:50  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.821
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Primär halte dich an: http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)

Code:
user
- userID
- username
- password
- vorname
- nachname
- enabled

user_addresses
- userID
- street
- streetNumber
- zip
- city

user_digital_contact
- userID
- email
- emailType enum(home, office, mobile)

user_real_contact
- userID
- phone
- phoneType enum(home, office, mobile)

user_groups
- groupID
- Name

user_group_relationship
- userID
- groupID

user_group_rights
- groupID
- entityDescriptor
- rightEnabled

user_sessions
- sessionID
- userID
- IP
- Browser
- currentPath
- block enum(true,false) default: false

...
Mal als beispiel
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 05.02.2012, 12:32  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.247
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Hi,

das lässt sich so nicht sagen. Was ist denn der Unterschied zwischen beiden Personengruppen bzw. was sind die Gemeinsamkeiten?
__________________
"Nuschel ich?" - "Was?"
Chriz ist offline   Mit Zitat antworten
Alt 05.02.2012, 12:58  
archer42
Gast
 
Beiträge: n/a
Standard

@troy
Danke für dein Beispiel!
Nimmst du für die user_sessions den Datenbank-Typ "memory"?

Zitat:
das lässt sich so nicht sagen. Was ist denn der Unterschied zwischen beiden Personengruppen bzw. was sind die Gemeinsamkeiten?
Also die Benutzer würden lediglich für die Zugangskontrolle verwendet werden und evtl. mal um die Telefonnummer für den letzt angemeldeten herauszufinden. Die Kundengruppe hingegen agiert bis auf die Metainformationen Verwaltung auf ein ganz anderes System (Bestellung hinzufügen...).

Ich denke also das eine Trennung durchaus sinnvoll ist im Nachhinein.
  Mit Zitat antworten
Alt 05.02.2012, 13:06  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.821
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

Zitat:
Zitat von archer42 Beitrag anzeigen
@troy
Danke für dein Beispiel!
Nimmst du für die user_sessions den Datenbank-Typ "memory"?
Warum sollte ich ? Memory-tabellen sind non-persistent, sie sind also bei mysql-abstürzen oder mysqld-restarts weg. Die Sessiondaten allerdings halten eine Zeitperiode lang unabhängig von der (hoch-)verfügbarkeit der zugrundegelegten Datenbank. Ergo ist die Sessiontabelle bei mir eine persistent gespeicherte Datenbanktabelle und keine In-Memory Tabelle.

Stell dir folgendes Szenario vor:
Du bist bei Webhoster XY und hast deine Datenbank dort gehostet und dein Script laufen. Selbst aber keine kontrolle über die Datenbank. Deine Seite läuft ein paar Wochen. Nach 7 Wochen restartet der Hoster seinen Datenbank-Cluster ( was generell wenige Sekunden dauert und ohne vorwarnung geschieht ) und zu diesem Zeitpunkt waren 2000 User auf deiner Seite angemeldet. Diese 2000 User sind dann ausgeloggt sobald die Datenbank wieder da ist. In diesem Fall wäre der Logout weder ein Sicherheitsfeature noch ein beabsichtigter Vorgang.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist offline   Mit Zitat antworten
Alt 05.02.2012, 17:39  
archer42
Gast
 
Beiträge: n/a
Standard

Verstehe.

Bei deiner Datenbank Struktur hast du die ID als forein key verwendet.

Soweit ich weiß funktioniert das unter Doctrine nicht, dass heisst für jede entfernte Tabelle muss ich eine weitere EIgenschaft anlegen, welche mittels Doctrine-Relation dann verknüpft wird.

Aus der Tabelle "users" wird dann:
- uid
- username
- salt
- password
- user_address_id (OneToMany)
- user_email_id (OneToMany)
- user_phone_id (OneToMany)
- ...
- is_active

Stimmt das so oder gibt es einen Trick, wie ich den Primary Key als Foreign Key verwenden kann (habe mal ein Thread erstellt aber keine Antwort bekommen....)

Gruß, archer

EDIT:
Habe gerade folgendes in der Doku. gefunden:
Zitat:
For Doctrine 2.0 composite keys of primitive data-types are supported, for Doctrine 2.1 even foreign keys as primary keys are supported.
Das heisst, dass diese Feature noch recht "neu" ist. Zumindest ist dieses Feature noch nicht in der offiziellen Dokumentation (2.0) angekommen.
Hat jemand eine Idee, wo sich nach solchen sachen suchen lässt?

Geändert von archer42 (05.02.2012 um 18:05 Uhr).
  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
[Erledigt] Data-Mapper und mehrere Tabellen magpie PHP Einsteiger 6 20.12.2011 19:51
[Erledigt] Frage zu Volltexte-Suche MATCH / AGAINST geneticZ Datenbanken 4 28.11.2011 14:47
Mehrer Tabellen aus Datenbank auslesen? Blade JavaScript, Ajax und mehr 5 17.11.2009 16:08
[Erledigt] Mehrere Tabellen mit gleichen Aufbau zu einer? rs_2009 Datenbanken 7 19.10.2009 23:47
tabellen oder div SteiniKeule PHP Tipps 2009 29 27.08.2009 16:51
[Erledigt] Mehrere MySQL Tabellen mit PHP abfragen DonMuchacho Datenbanken 7 27.07.2009 19:47
Tabellen miteinander verknüpfen Suzi Datenbanken 12 27.05.2009 11:40
[Erledigt] Limit auf Ergebnissumme mehrerer Tabellen Frank Datenbanken 8 02.09.2008 11:33
Tabellen für Vokabeltrainer anlegen... anonym01 PHP Tipps 2008 9 03.03.2008 21:18
[Erledigt] Kurze Frage zum Gestallten von Tabellen ... HTML, Usability und Barrierefreiheit 2 28.07.2005 11:07
[gelöst] Daten aus zwei Tabellen, join geht nicht!? PHP Tipps 2005-2 3 14.07.2005 09:50
MySQL Daten aus verknüpften Tabellen auslesen ? PHP Tipps 2005-2 2 27.06.2005 03:21
Spezielle Frage zu tabellen PHP Tipps 2005 1 15.05.2005 22:29
[Erledigt] Selectanfrage an eine Datenbank,aber aus mehreren Tabellen Datenbanken 2 26.10.2004 07:23
[Erledigt] fulltext suche priorität von tabellen setzen Datenbanken 1 09.08.2004 15:26

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
doctrine tabelle verknüpfen, datenbanktyp für user id

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