Эта схема БД Post / Tag вызовет проблемы позже? - PullRequest
0 голосов
/ 13 июля 2010

Я планирую новый сервис для моего приложения ASP.NET MVC и хочу использовать теги.Я никогда не слишком любил теги, но SO поставляет, поэтому я попробую.

Вот упрощенная схема, о которой я думаю:

Post Table
------------------
PK PostId BigInt (or perhaps uniqueidentifier)
...more post related fields...
Tags nvarchar(200)

Тогда яLINQ запрос что-то вроде:

_db.Posts.Where(p => p.Tags.Contains("TagToFind"));

Очевидно, это очень просто, но будет делать то, что мне нужно.Видите ли вы какие-либо явные проблемы с этим?Вероятно, производительность, я думаю, .Contains () не совсем быстрая.

ОБНОВЛЕНИЕ Я планирую иметь предварительно созданный массив допустимых тегов, из которых пользователь может выбирать.

Ответы [ 3 ]

1 голос
/ 13 июля 2010

Это может работать, но не будет масштабироваться, если у вас нет полнотекстового индекса в этом столбце (и вы запрашиваете его с помощью запросов в полнотекстовом стиле).

Также нормализация тегов (наличие таблицы тегов) является своего рода ключом, если вы не сделаете это, вы не сможете справиться со слияниями или отследить, когда / кто создал какой тег.

0 голосов
/ 13 июля 2010

Ваш запрос не сможет использовать индекс. Таким образом, больше сообщений => хуже производительность.

0 голосов
/ 13 июля 2010

Видите ли вы какие-либо явные проблемы с это? * * 1002

Хорошо, давайте проверим:

INSERT INTO PostTable (PostId, Tags) 
VALUES (0, NULL), 
       (1, NULL), 
       (2, NULL), 
       (22, ''), 
       (55, 'Hello world!'), 
       (-99, 'Hello world!');

Нет реляционного ключа, нет целостности данных. Нет, абсолютно никаких проблем там нет;)

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