2017-03-13 2 views
0

muss ich zur Zeit eine allgemeine Users Tabelle mit den folgenden SpaltenMySQL in zwei Tabellen oder halten alles in einem

user_id 
first_name 
last_name 
join_date 
last_active 
email 
password 
rank 
status 

Einige Benutzer (die mit Rang = 3) werden einige zusätzliche Informationen wie Telefon bieten Nummer, sekundäre E-Mail, Geburtstag, etc. (insgesamt 15 Felder). Ich fragte mich, ob ich diese Spalten in dieser Tabelle hinzufügen sollte oder ob ich eine andere Tabelle erstellen und eine Verbindung mit der Users one mit user_id herstellen sollte. So etwas wie dieses:

user_id 
all new columns 

Welches wäre die beste Option?

+1

Es hängt davon ab, wie viele Datensätze Sie haben. Wenn es ein vernünftiger Betrag ist, ist es vollkommen in Ordnung, alles in einem Tisch zu behalten. – Gab

+0

@Gab Ich würde nicht mehr als 1000 innerhalb der nächsten paar Jahre sagen. – George

+1

eine Tabelle ist in Ordnung – Gab

Antwort

0

Der Zwei-Tabellen-Ansatz ist machbar.

Um alle Spalten aus beiden Tabellen zu erhalten:

SELECT t1.*, t2.* 
    FROM t1 
    LEFT JOIN t2 USING(user_id); 

mich als unter der Annahme, dass die Zeile in t2 manchmal fehlen wird, aber Sie wollen mit NULLs für die fehlenden Daten die Zeile, bekommen - daher LEFT JOIN . Wenn Sie wissen, dass Sie t2 nicht benötigen, tun Sie nicht die JOIN. Aber es gibt keinen Schaden, abgesehen von ein wenig Leistung, immer die JOIN zu tun.

Ist es die "beste Option"? Das ist schwer zu sagen, ohne mehr über Ihr System zu wissen. Aber basierend auf den Informationen, die Sie erwähnen, scheint es eine "gute" Option zu sein.