2016-04-29 3 views
1

Ich brauche eine Tabelle, um Text jede Woche für jeden Benutzer zu speichern.
Also dachte ich zwei Alternativen:
1) Unter Verwendung von Verbundprimärschlüssel:Korrekte Struktur und Index für eine Wöchentliche Tabelle

CREATE TABLE `WeeklyTxt` ( 
`Year` YEAR(4) NOT NULL , 
`Week` ENUM('1','2','3','4', ... ,'51','52','53') NOT NULL , 
`UserId` BIGINT NOT NULL , 
`WeekTxt` TEXT NOT NULL, 
PRIMARY KEY (`Year`, `Week`, `UserId`) 
) ENGINE = InnoDB; 

2) Mit Autoincrement Primärschlüssel

CREATE TABLE `WeeklyTxt_2` ( 
`WeekTxtId` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, 
`Year` YEAR(4) NOT NULL , 
`Week` ENUM('1','2','3','4', ... ,'51','52','53') NOT NULL , 
`UserId` BIGINT NOT NULL , 
`WeekTxt` TEXT NOT NULL 
) ENGINE = InnoDB; 

ich kann nicht herausfinden, was die bessere Wahl sein könnte (und warum)

Antwort

0

Es hängt von der Suche in der Tabelle ab, die Sie normalerweise tun werden!

Tipically würde ich einen einfachen Primärschlüssel verwenden, und ich werde eine anderen Schlüssel wie Sie Ihren Schlüssel hinzufügen: (Year, Week, UserId)

+0

Denken Sie, ein 'KEY' genug ist? Glaubst du nicht, ist es besser, ein 'EINZIGARTIG' zu verwenden? Warum wählen Sie eine statt der anderen? – genespos

+0

Ja natürlich! EINZIGARTIG ist besser! Sie müssen sich Gedanken über die Abfragen machen, die Sie in dieser Tabelle verwenden werden, z. B. müssen Sie eine neue Tabelle mit 'WeekTxtId' aktualisieren oder mit einer anderen Tabelle verbinden. Dann ist Ihre zweite Option OK. Sie zeigen in einem Dashboard die Informationen dieses Jahres, letzte Woche des aktuellen Benutzers? dann ist deine erste Option besser. –

Verwandte Themen