![]() |
|
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]()
|
|
| Raiser |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 30.5.2006 Репутация: нет Всего: нет |
Здравствуйте. Пишу свой первый проект
![]() Есть два "верхних" раздела: Раздел1 и 2, возможно, необхожимо будет добавлять новые. В эти разделы помещаются ссылки, как Вы видите, в раздел 1 ссылки помещаются без дополнительной разбивки по подразделам. Но в разделе 2 ссылки разбиваются ещё на подразделы (2). Теперь по самим ссылкам, каждая описывается так "name", "description" и так же есть ссылки которые оформляются стандартным стилем (задан в CSS) это (1) и есть "спецссылки" (3) которые оформляются особым стилем (соотв. это надо как-то заносить в БД). И ещё про подразделы разделов - сейчас во 2м подразделы есть, но в 1м нет, но в будущем они соотв. могут понадобится. Как я себе представляю структуру: 1. есть таблица "divisions" - разделы, туда помещается инфа о разделах с такими полями: Name и DID - номер раздела. 2. Есть таблица "subdivisions" - подразделы разделов Далее, таблица со ссылками "links" , выглядит так: name - имя ссылки descriprion - описание razdelid - id раздела к которому относится podrazdelid - подраздел... style - имя стиля CSS, если ссылка оформляется особо, если это поле пустое - то ссылка оформляется по умолчанию. Мне не ясны такие вещи: как лучше построить базу и как выполнять запросы на занесение данных и выборку данных ? При выборке нет необходимости все по-отдеьности вытаскивать, небходимо вытаскивать сразу все. Вопрос, вижу большой и сложный, пожалуйста помогите |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
Raiser, как я понимаю, ссылки представляют собой дерево. А ограничена ли глубина вложенности? Или(потенциально, по крайней мере) у подразделов могут быть ещё подразделы?
|
|||
|
||||
| Raiser |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 30.5.2006 Репутация: нет Всего: нет |
Skyboy, нет, у подразделов не может быть ещё подразделов.
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
ссылка, независимо от уровня вложенности, обладает одними и теми же характеристиками? да?
|
|||
|
||||
| Raiser |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 30.5.2006 Репутация: нет Всего: нет |
Да, ссылки обладают одними и теми же характеристиками, и ссылка имеет либо "стандартный" вид, либо "специальный" вид.
Так же ссылка может быть дочерней к разделу, либо дочерней к подразделу раздела. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 14 Всего: 260 |
Raiser, тогда делай единый список. Не разбивай на разные таблицы. С опытом научишься радоваться тому, что можно единообразно работать с разными(по представлению, а не по сути) объектами.
Итак. Моё предложение: все объекты сделать одинаковыми и равноправными. Причём, как то,что у тебя сейчас идёт как ссылка, так и заголовки разделов(можно будет без проблем подвесить к ним ссылки в будущем): nodes: idNode integer(10) autoinc text varchar(255) primary index idNode Тут мы храним все наши текстовые значения ссылок и названий разделов __________________ nodes_tree: idNode integer(10) idParent integer(10) primary index idNode, idParent Тут мы храним наше дерево: предка для каждого узла. Узлы верхнего уровня(твои разделы) имеют предка 0. Пожалуй, стоит добавить уникальный индекс на поле idNode, чтоб у узла не могло быть более одного родителя. В данном случае, как я понял, нужны деревья, а не графы... __________________ nodes_location: idNode integer(10) location varchar(255) primary index idNode Тут у нас URI для тех товарищей, кто у нас ссылкой работает. __________________ classes idClass integer(10) autoinc className varchar(255) primary index idClass Список имён CSS-классов наших узлов __________________ nodes_classes idNode integer(10) idClass integer(10) primary index idNode, idClass index unique idNode Тут мы привязываем к каждому узлу свой CSS-класс(каждый класс может быть привязан к нескольким узлам, но узел может иметь одновременно не более одного класса) __________________ nodes_inline_styles idNode integer(10) style varchar(255) Здесь хранятся "встроенные" стили, задаваемые аттрибутом style. __________________ Теперь, что вытянуть узел, надо сделать так:
Так у тебя для нужного тебе узла будут: - текстовая строка для представления на странице - ссылка для перехода - имя класса - информация о стиле, которая слишком "уникальна", чтоб применять класс. Если уверен, что, например, у всех узлов будет указано имя класса, то замени LEFT JOIN nodes_classes на INNER JOIN nodes_classes. Работать будет в несколько раз быстрее. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PHP: Базы Данных | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |