Какой из двух способов я должен использовать, чтобы вставить теги в MySQL? - PullRequest
1 голос
/ 14 мая 2010

Для каждого объявления я разрешаю пользователям выбирать до 5 тегов. Прямо сейчас, в моей базе данных, у меня есть это как ...

Posting_id     TagID
    5            1
    5            2 
    5            3
    6            5
    6            1

Но я подумала, стоит ли сделать это как ...

    Posting_id     TagID
    5              1 2 3 
    6              5 1

Тогда первый вариант гораздо проще вставлять и извлекать данные. Но если у меня есть 100 постов с 3 тегами в каждом, это 300 строк ... так что еще больше строк

Второй вариант требует использования explode () impode () и т. Д., Но он намного чище.

Какой вариант я должен сделать и почему? спасибо!

РЕДАКТИРОВАТЬ: Первый путь лучше!

Ответы [ 4 ]

3 голосов
/ 14 мая 2010

Используйте первую опцию, поскольку вторая опция затрудняет эффективное индексирование столбца TagID. Если вы когда-нибудь захотите запросить данные о конкретном числовом значении, хранящемся в столбце TagID (и я держу пари, что так и будет), вы получите низкую производительность из второго варианта.

2 голосов
/ 14 мая 2010

Сделай это первым способом. Строки дешевы, и MySQL может обрабатывать таблицы с миллионами и миллионами строк. Кроме того, выполнение первого способа сохраняет его идентификатор в виде целого числа, что может значительно упростить будущую работу с таблицей (например, при выполнении объединений и обращении к внешним ключам).

0 голосов
/ 14 мая 2010

Второй метод нарушает первое правило нормализации базы данных.

0 голосов
/ 14 мая 2010

Первый. Вы поймете это, когда вам нужно «Подсчитать все темы с помощью этих тегов, но не с этими другими».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...