Хранение категорий в базе данных - PullRequest
1 голос
/ 28 мая 2011

Если какой-то объект может быть video, audio, или story, лучше ли иметь отдельную таблицу для каждой категории, или можно использовать поле "type", которое содержит много и много "audio", "video" и "story" записей?

1) ПРИНЯТЬ, что каждый объект может быть только одного типа

2) ПРИМЕРЯТЬ, что каждый объект может быть нескольких типов (В этом случае лучше всего определить таблицу ObjectType, в которой хранятся отношения между объектами и типами, верно?)

(я использую реляционную базу данных)

Спасибо!

1 Ответ

1 голос
/ 28 мая 2011

Предлагаемые схемы ниже. Используя идентификаторы, а не строки, вы уменьшаете объем памяти и усилия, требуемые ядром базы данных при присоединении. Вы также значительно упрощаете переименование категории - вместо того, чтобы обновлять множество строк, в которых используется категория, вы обновляете одну строку CATEGORY.

Только с одной категорией на единицу:

ITEM:
ID
CATEGORYID
...

CATEGORY:
ID
NAME
...

С несколькими категориями на элемент:

ITEM:
ID
...

CATEGORY:
ID
NAME
...

ITEMCATEGORY:
ITEMID
CATEGORYID
...