Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как организовать хранение категорий для статей? / 4 сообщений из 4, страница 1 из 1
25.04.2009, 20:56
    #35954192
dfl2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать хранение категорий для статей?
Есть многопользовательская система для публикации статей.
Как организовать хранение категорий для статей?
Создал таблицы:

T1) users (для авторизации пользователей),
Код: plaintext
1.
2.
3.
4.
5.
6.
create table users (
userid int unsigned auto_increment primary key,
email varchar( 99 ),
password varchar( 32 ),
registered datetime,
locked boolean
);


T2) articles (статьи, написанные пользователями)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
create table articles (
artid int unsigned auto_increment primary key,
title varchar( 255 ),
owner int unsigned,
posted datetime,
data text,
locked boolean
);


Хочу дать возможность пользователям самим раскладывать написанные статьи по категориям.
Создавать/редактировать/удалять категории должны тоже сами пользователи.
Соответственно у каждого из них свой набор категорий.


В таблицу articles добавил catid int unsigned, создал таблицу categories:

T3)
Код: plaintext
1.
2.
3.
4.
5.
create table categories (
catid int unsigned auto_increment primary key,
name varchar( 255 ),
owner int unsigned
); 

Соответственно 100 пользователей создали по 20 категорий = 2000 записей.
Есть подозрение, что можно хранить категории оптимальнее, а доказать не могу :)

Спасибо.
...
Рейтинг: 0 / 0
26.04.2009, 00:28
    #35954322
mista2009
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать хранение категорий для статей?
dfl2,

А пачему бы ещё не создать таблицу категорий без привязки к пользователям? Некоторый классификатор уникальных категорий. Пользователи либо выбирают подходящую категорию, а если нет подходящей, то в этот классификатор категорий добавляют ещё одну. Ну и соотв. должна быть ещё одна таблица КатегорииПользователей которая будет связывать пользователей и классификатор категорий. Оптимальность такого решения будет заключаться в некотором порядке в категориях ну и в таблице КатегорииПользователей уже будут не названия категорий, а ссылки на классификатор.
...
Рейтинг: 0 / 0
26.04.2009, 01:10
    #35954354
dfl2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать хранение категорий для статей?
mista2009,

Спасибо за столь быстрый ответ.
Если я Вас правильно понял, приняв предложенную Вами модель теперь:

1) Таблица category содержит:
-- первичный ключ;
-- номер_в_каталоге;
-- id-пользователя, который имеет такую категорию

2) Таблица catalog:
-- первичный ключ;
-- собственно название категории

3) В таблице articles будет указатель на category.

При удалении категории A пользователем X, убиваем все указатели в articles на A (статьи лишаются привязки к категории, становятся "сиротами"), убиваем соответсвующую запись в category где id = X.

Завтра попробую реализовать.
Похоже это как раз то, что нужно :)

Спасибо.
...
Рейтинг: 0 / 0
26.04.2009, 01:33
    #35954362
mista2009
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как организовать хранение категорий для статей?
dfl2
При удалении категории A пользователем X, убиваем все указатели в articles на A (статьи лишаются привязки к категории, становятся "сиротами"), убиваем соответсвующую запись в category где id = X.


И если категория А больше не используется в category, то удаляем из catalog
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как организовать хранение категорий для статей? / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]