Синонимы тегов в схеме БД с тремя столбцами - PullRequest
0 голосов
/ 18 февраля 2012

Предположим, что у вас та же модель данных, что и описанная здесь .

Table: Item
Columns: ItemID, Title, Content

Table: Tag
Columns: TagID, Title

Table: ItemTag
Columns: ItemID, TagID

Если вы хотите, чтобы синонимы тегов были такими же, как на stackoverflow, где бы вы разместили эту информациюв модели данных?Вы бы добавили только один атрибут с разделенным запятыми списком синонимов или немного изменили бы модель данных?

Как будет выглядеть оператор SQL для вставки нового элемента?Будет ли новый элемент связан со всеми синонимами или только с одним основным тегом, и в коде мы должны определить, что это синоним?

Какой подход вы бы порекомендовали для плавного вставки , удаление и поиск по тегу операции?

1 Ответ

1 голос
/ 18 февраля 2012

Измените таблицу Tag и добавьте таблицу TagSynonym:

Table: Tag
Columns: TagID

Table: TagSynonym
Columns: TagID, Title

TagSynonym.TagID будет FK до Tag(TagID), а Title будет PK.


Если вы также хотите иметь тег «MainSynonym», вы можете использовать это:

Table: Tag
Columns: TagID

Table: TagSynonym
Columns: TagID, Title

Table: TagMainSynonym
Columns: TagID, Title

с TagMainSynonym(TagID), представляющим собой PK, и TagMainSynonym(TagID, Title), являющимся FK для TagSynonym(TagID, Title).

Это может показаться запоздалым, но для простой операции, такой как объединение двух тегов, потребуется только UPDATE (одна строка) для Tag.TagID, а каскадные эффекты сделают все остальное (в 3 таблицах)

...