Sie hat nicht gesagt, wenn Sie eine höhere Programmiersprache verwendet wurden, so dass ich nur ein allgemeines Beispiel mit DB-ähnlichem Beispiel:
Datenbank-Design ist hart. Also, das wird eine schnelle und einfache Antwort sein.
Ihre Frage ist eine grundlegende Frage über Datenbeziehungen und Datenbankdesign. Suchen Sie einige grundlegende Anleitungen, um diese Antwort zu unterstützen. Es kann hilfreich sein, darüber nachzudenken, wie Ihre Informationen gruppiert sind, und aus den anderen Sätzen (Tabellen) "zurück" mit dem primären Satz (Tabelle) zu verknüpfen.
Also, Benutzer sind Benutzer - das ist Ihre Tabelle. Es sollte die wichtigsten gemeinsamen Elemente (Spalten) von Daten enthalten, die einem Benutzer zugeordnet sind.
Dann ist diese andere Gruppe von Informationen (z. B. Berechtigungen oder etwas) eine andere Tabelle.
Stellen Sie sicher, dass diese andere Tabelle einen Wert (Spalte) hat, der auf den Benutzer verweist, auf den er sich bezieht. Sie werden wahrscheinlich wollen Ihre Datenbank sagen, einen „Index“ zwischen ihnen zu schaffen (Lookup-Leistungen zu verbessern, etc.)
zum Beispiel eine Art von „Erlaubnis“ Tabelle für den Anwender:
- integer "id" <--- unique, index column, auto-increment
- integer "user_id" <--- this is which user this belongs
- ...
- Boolean "can_write" <--- example data column
- Boolean "can_read" <--- example data column
- Boolean "can_reboot_system" <--- example data column
- etc, whatever you want
So, Sie könnten "SELECT * FROM user_table WHERE first_name = 'joe' (oder so) ... um einen Benutzer zu bekommen. Dort würde ich hoffen, dass Sie eine Art 'ID' -Wert haben, um diese Zeile zu identifizieren.
Nun, tun Sie einfach eine 'SELECT * FROM Berechtigungen WHERE user_id =' nnnn '(was auch immer die ID dieses Benutzers ist).
Wenn ein Benutzer nur über 1 Berechtigungssatz verfügt, können Sie diese Benutzer-ID ohne die zusätzliche ID-Spalte haben.
Danke, dj_segault. Ich ging mit Ihrer Option # 1, und erstellt eine Benutzertabelle mit den allgemeinen Feldern und einem userType-Feld, das durch die anderen, mehr "spezifischen" Benutzertabellen referenziert wird. Die NULLS haben definitiv Kopfschmerzen verursacht, ich bin froh, sie jetzt los zu sein! – littleK
korrigieren Sie mich, wenn ich falsch liege (es passiert viel), aber wenn jemand ihre Daten so speichern würde, dass die gemeinsamen Felder auf einer "Benutzer" -Ebene wie fname, lname, email, pw ... und so weiter waren . Es gäbe keine Möglichkeit, mit einem einzigen Abfrage-Recht auf die benutzerspezifischen Informationen zuzugreifen. Es würde immer eine zweite Abfrage basierend auf dem Benutzertyp benötigen, um an spezifischere Informationen zu gelangen. – ackerchez
@ackerchez Sicher gibt es. Alles, was Sie tun müssen, um ALLE Informationen zu erhalten, besteht darin, alle user-type-spezifischen Benutzertabellen mit der Haupt-Benutzertabelle zu verknüpfen, unabhängig von Ihrer UID. Die Spalten für die Tabellen, die nicht für diesen Benutzertyp sind, sind null. –