2016-09-21 4 views
0

Ich machte eine Firma, um einen Benutzer zu meiner Datenbank hinzufügen jetzt möchte ich zwei Tabellen haben. Eine Tabelle verfolgt die Sprachen, die der Benutzer kennt, und die andere Tabelle die Entwurfssoftware, die der Benutzer verwendet.Wie verwende ich mehrere Tabellen, um ein Benutzerprofil zu erstellen?

Würde ich 3 Tabellen erstellen (Profil, Sprachen, Software) jeweils mit einem I-Feld und wenn ich einen Benutzer hinzufügen eine Zeile zu jeder Tabelle hinzufügen?

+1

Sie benötigen 5 Tabellen, da Sie zwei verschiedene Viele-zu-Viele-Beziehungen pflegen müssen. Ich nehme an, dass ein Benutzer mehrere Sprachen kennt und mehrere Software-Tools verwendet. –

+0

Was wäre die 5? Ich dachte nur Profil, Sprachen, Software – BBDev

Antwort

2

Wenn Sie beginnen, mehrere Viele-zu-Viele-Beziehungen hinzuzufügen, benötigen Sie mehr Tabellen, um die Informationen miteinander zu verknüpfen. Hier ist, wie ich das Problem angehen würde:

Hinweis Die IDs sollten alle eindeutige indizierte Spalten sein. Erwägen Sie die Verwendung von AUTO_INCREMENT.

Tabelle 1: Enthält Benutzerprofilinformationen

| ProfileID |UserInfo | 
|=======================| 
|  0  | Info  | 
|-----------------------| 
|  1  | Info2  | 
|-----------------------| 

Tabelle 2: Speichert die möglichen Sprachen

|LanguageID |LanguageName| 
|========================| 
|  50 | Python  | 
|------------------------| 
|  51 | Java  | 
|------------------------| 

und so weiter ...

Tabelle 3: Speichert die Profil-Links zur Sprache es

|ProfileID |LanguageID | 
|========================| 
|  0  |  50  | 
|------------------------| 
|  0  |  51  | 
|------------------------| 
|  1  |  50  | 
|------------------------| 

Jedes Mal, wenn Sie dem Profil eines Benutzers eine Sprache hinzufügen wollten, würden Sie einen Eintrag in dieser Tabelle erstellen.

Sie würden zwei weitere Tabellen für die Software hinzufügen, die ein Benutzer kennt. Eine Tabelle für alle möglichen Arten von Software und eine weitere, um die Links zu speichern.

Wenn Sie die Informationen abrufen möchten, würden Sie eine Operation wie das unten tun:

SELECT * FROM Table3 
LEFT JOIN Table2 
ON Table3.LanguageID = Table2.LanguageID 
WHERE ProfileID = [TheProfileIDToSearch] 

Diese Struktur verwendet JOIN Tabellen miteinander zu verknüpfen sofort Informationen aus mehreren Tabellen zurückzukehren. Hier ist eine W3Schools kurze Erklärung über SQL JOINS.

Verwandte Themen