Топология БД для "каталога" хорошо бы без ограничения вложенности

voland

Guest
Топология БД для "каталога" хорошо бы без ограничения вложенности

сабж
Мне пришла в голову такая.
PHP:
#
# Структура таблицы `main`
#

CREATE TABLE `main` (
  `uid` int(11) NOT NULL auto_increment,
  `name_katalog` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`uid`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

# --------------------------------------------------------
# Структура таблицы `podrazdel`
# Связанна с `main` через `uid`
#

CREATE TABLE `podrazdel` (
  `uid` int(11) NOT NULL default '0',
  `suid` int(11) NOT NULL auto_increment,
  `razdel` varchar(50) NOT NULL default '',
  PRIMARY KEY  (`suid`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;

# --------------------------------------------------------
# Структура таблицы `data_podrazdela`
# Связанна с `podrazdel` через `suid`
#

CREATE TABLE `data_podrazdela` (
  `suid` mediumint(9) NOT NULL default '0',
  `datatext` text NOT NULL
) TYPE=MyISAM;
Подскажите пожалуйста, эта топология подойдет или можно сделать лучше?
Заранее спасибо!
 

Demiurg

Guest
А теперь поподробнее с описанием задачи.
 

Boratustra

Новичок
А можно спросиь: почему бы не объединить таблицы `main` и `podrazdel`?
имхо, тогда было бы проще реализовать именно неограниченную вложенность...
 

voland

Guest
почему бы не объединить таблицы `main` и `podrazdel`?
Потому, что в `main` может быть один главный раздел WWW
а подразделов у него может быть 10...

А теперь поподробнее с описанием задачи.
Хочеться сделать что-то подобное... http://yaca.yandex.ru
Но можно ли не ограничиваться кол-вом вложений?
Каталог::Подраздел1::Подраздел2::ПодразделХ
и т.д.

У меня сейчас одна вложенность
Каталог::Подраздел
А вот как я должен изменить БД, чтобы Подраздел мог иметь свои подразделы и т.д.?
 

Boratustra

Новичок
Потому, что в `main` может быть один главный раздел WWW
а подразделов у него может быть 10...
хм, я, наверно, чего-то не догоняю, но, по-моему, твоей цели "неограниченной вложенности" удовлетворяет таблица `podrazdel`,
просто в случае, когда `uid` равен 0, значит элемент находится на самом верху и т.д
 

Falc

Новичок
voland
Каталогов неограниченой вложености представляет из себя дерево, а как хранить деревья в базе обсуждалось тут десятки раз. Есть несколько способов у каждого свои плюсы и минусы. Вобщем в поиск.
 

voland

Guest
Demiurg
Falc
Спасибо! Что-то сразу не сообразил...
 
Сверху