Ich erstelle eine App für soziale Lesezeichen. Ich habe ein Re-Thought der DB-Design in der Mitte der Entwicklung.
Soll ich die Lesezeichentabelle normalisieren und die Markierungsspalten, die ich habe, in eine separate Tabelle entfernen? Ich habe 10 Tags pro Lesezeichen und daher 10 Spalten pro Datensatz (pro Lesezeichen).
Es scheint mir, dass das Brechen der Tabelle in zwei würde nur bedeuten, ich müsste eine Verknüpfung zu tun, aber die Art und Weise, die ich derzeit haben, ist eine gerade auswählen - aber die Tabelle fühlt sich nicht richtig ...?
Danke an alle
Update
Aktuelle Tabellenstruktur:
CREATE TABLE IF NOT EXISTS `bookmarks` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` char(250) NOT NULL,
`link` text NOT NULL,
`keyword_1` char(250) NOT NULL,
`keyword_2` char(250) NOT NULL,
`keyword_3` char(250) NOT NULL,
`keyword_4` char(250) NOT NULL,
`keyword_5` char(250) NOT NULL,
`keyword_6` char(250) NOT NULL,
`keyword_7` char(250) NOT NULL,
`keyword_8` char(250) NOT NULL,
`keyword_9` char(250) NOT NULL,
`keyword_10` char(250) NOT NULL,
`date_added` datetime NOT NULL,
`privacy_type` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=68 ;
Ein Lesezeichen gehört zu einem Benutzer, ein Tag gehört zu einem Lesezeichen. Sollte ich also die user_id zur Tabelle tags hinzufügen?
Eine neue verwandte Frage:
Wie würden Sie nach einem Tag suchen und das Lesezeichen zurückgeben?
Schön, ein Beispiel für eine SQL-Abfrage zu sehen. Ich hoffe auf etwas Effizientes, da mir derzeit nichts Anständiges einfällt, außer einem LIKE-Test für jede Schlüsselwortspalte!