php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.01.2012, 16:47  
archer42
Gast
 
Beiträge: n/a
Standard Struktur Benutzer-Tabelle Symfony2

Hallo,

ich möchte den Authentifizierungsdienst von Symfony2 über MySQL laufen lassen. Dazu muss ich erstmal eine Struktur anlegen.

Nun wollte ich Fragen, ob es sich empfiehlt die Tabelle aufzusplitten oder ob ich lieber alles in einer großen Tabelle anlegen sollte:

projekt_users:
- id
- username
- salt
- password
- is_active
- user_roles (Fremdschlüssel mit "project_users_group.name")

projekt_users_log:
- id
- username (Fremdschlüssel mit "project_users.username")
- date
- ip
- browser

projekt_users_meta:
- id (Fremdschlüssel mit "project_users.id")
- last_name
- first_name
- birth
- street
- number
- zip_code
- place
- email
- private
- mobile
- created_at

projekt_users_group:
- id
- name
- role

Was haltet ihr von der Struktur?
Mir ist klar, dass diese nicht der letzten NF entspricht, allerdings halte ich die NF ab 3 sehr streng.

Wie sieht es mit den Beziehungen aus?


PHP-Code:
// ....
   /**
     * @ORM\ManyToMany(targetEntity="Group", inversedBy="users")
     */
    
protected  $groups;
/.. 
Sollte ich für die Meta-Daten "OneToOne unbidirectional" als Beziehung wählen?

Gruß archer

Geändert von archer42 (26.01.2012 um 18:28 Uhr).
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.01.2012, 18:31  
archer42
Gast
 
Beiträge: n/a
Standard

Nachtrag:

Bin mir mit der Tabellenstruktur an sich mittlerweile sicher. Die 3. NF wäre zu "extrem", die 2. wird allerdings schon gut erfüllt.

Meine letze verbleibende Frage ist also:
Zitat:
Kann ich den Primärschlüssel (id) von project_users_meta als Fremdschlüssel nehmen oder sollte man dazu eine extra Spalte "meta_id" anlegen?
Gruß,
archer42
  Mit Zitat antworten
Alt 27.01.2012, 12:20  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Zitat:
Kann ich den Primärschlüssel (id) von project_users_meta als Fremdschlüssel nehmen oder sollte man dazu eine extra Spalte "meta_id" anlegen?
Die Frage verstehe ich nicht wirklich. Ein Fremdschlüssel kann nicht gleichzeitig ein Primärschlüssel sein.
Stelle die Frage bitte mal verständlich. Danke.
Meinst du außerdem einen Fremdschlüssel im Sinner von Foreign Keys oder einfach nur eine ID die als Identifikator für eine Join Abfrage gelten soll?
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Alt 27.01.2012, 12:52  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

genau das sollte eigentlich gehen - litter hat zwar recht - die Datenbank verweigert die gemeinsame Festlegung als Primär UND Fremschlüssel für ein und dieselbe Spalte - aber in deinem Beispiel brauchst du den "Fremdschlüssel" ja nicht explizit auf Datenbank-Ebene.

für jeden echten User existiert 1 Datensatz in der Tabelle projekt_users - und ein Datensatz in der projekt_users_meta

ich habe das bei mir so gelöst, das in projekt_user_meta die ID-Spalte nur Unique not NUll gesetzt ist - die Tabelle hat also keinen expliziten Primärschlüssel und die Fremdschlüsselbeziehung löse ich über meine Anwendung
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 27.01.2012, 13:58  
archer42
Gast
 
Beiträge: n/a
Standard

Zitat:
Die Frage verstehe ich nicht wirklich.
Zitat:
Ein Fremdschlüssel kann nicht gleichzeitig ein Primärschlüssel sein.
Erklärt sich von selbst

Zitat:
ich habe das bei mir so gelöst, das in projekt_user_meta die ID-Spalte nur Unique not NUll gesetzt ist - die Tabelle hat also keinen expliziten Primärschlüssel und die Fremdschlüsselbeziehung löse ich über meine Anwendung
Ich versuche momentan noch das über Doctrine bzw. die Datenbank zu machen, allerdings sehe ich das Scheitern kommen.

Ich habe es momentan so, dass eine Spalte metaUser_id als foreign key zu user_meta führt.

Leider bringt die Eigensinnigkeit von Doctrine alles durcheinander.
Ich habe mehrere "Brüche" in meiner Tabelle und kann diese anscheinend auch nicht beheben, da Doctrine da keine Optionen zu hat.

1.
PHP-Code:
    /**
     * @ORM\OneToOne(targetEntity="UserMeta", inversedBy="userMeta")
     */
    
protected $userMeta
Dieser Eintrag erzeugt eine Spalte "userMeta_id". Ich persönlich finde "meta_id" wesentlich passender, allerdings gibt es keine Möglichkeit dies anzugeben...

2.
PHP-Code:
    /**
     * @ORM\ManyToMany(targetEntity="Group", inversedBy="groups")
     */
    
protected  $groups
Dies erzeugt eine neue Tabelle user_group, welche user.id mit group.id verknüpft.
Allerdings kommt user_group in Konflikt mit meinem Bennenungsschema für group ("user_group").
Was dann zu folgenden Tabellen führt:
user
user_meta
users_group
user_group


EDIT:
Habe gerade gesehen, dass sich mit JoinColumn eventuell etwas machen lässt
EDIT:
Leider doch nicht...

Geändert von archer42 (27.01.2012 um 14:06 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
Ausgabe Tabellen dynamisch aus Tabelleninhalt erstellen titus81 Datenbanken 5 20.05.2011 19:58
Eine Tabelle, oder lieber mit zweite Tabelle arbeiten und diese Joinen? freshjayson Datenbanken 3 11.04.2011 13:04
Mysql Spalte einer Tabelle als Spalte einer zweiten Tabelle Hoschi Datenbanken 2 04.03.2011 21:23
"Password vergessen" Funktion - Design Hagbard-Celine Datenbanken 11 07.02.2011 12:59
[Erledigt] Ausgabe einer MySQL Tabelle umdrehen Index PHP Einsteiger 11 22.01.2011 19:42
Scriptsuche Daten aus HTML Tabelle A in HTML Tabelle B einfügen headbannger83 Scriptbörse 1 10.01.2011 15:39
HTML Tabelle Werte ändern -> direkt mit AJAX speichern Atikos JavaScript, Ajax und mehr 3 31.12.2010 01:15
Design einer DB für mehrsprachigkeit Squall Software-Design 35 08.10.2010 13:09
Benutzer laden unterschiedliche css Dateien keek PHP Tipps 2010 6 29.03.2010 16:52
[Erledigt] Intertabellarische Berechnungen, wie? dave303 Datenbanken 13 05.03.2010 11:58
[Erledigt] MySQL, Daten in Tabelle einlesen, Struktur funktioniert nicht ganz MasterChief PHP Tipps 2008 3 13.10.2008 11:39
where Abfrage in anderer Tabelle?? Matthiasnet Datenbanken 10 11.04.2007 17:35
Zeilenanzahl einer tabelle mit WHERE aber ohne schleife? sovereign Datenbanken 13 17.04.2006 20:34
Sortieren anhand einer zweiten Tabelle PHP Tipps 2004 6 20.09.2004 09:03

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
symfony2 datenbank abfragen nach einer spalte, symfony 2 benutzer, symfony 2 benutzer login datenbank, datenbank symfony2 abfrage, symfony2 db abfragen, symfony2 ajax table, symfony2 tabelle datenbank, symfony2 forum datetime abfrage, symfony2 1:n beziehung, fremdschlüsselbeziehung symfony2, symfony2.0 benutzer erstellen

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