Как спроектировать базу mysql

12
vladex
На сайте с 21.12.2008
Offline
9
1491

Здравствуйте!

Подскажите мне ответ на такой вопрос:

У меня есть задумка создать порфолио, оно имеет такую структуру >>>>>

скачать оригинал.

Как видите вложенность 4-уровня.

Как мне лучше и правильно спроектировать базу данных mysql для такой структуры.

Я хочу сделать так:
основная база:
portfolio
|
categor
|
settings
/ \
design 3dgrafics

Вот таким образом.

Сейчас пишу словами:

Создана база данных portfolio с таблицами settings categor design 3dgrafics.

Таблица settings - включает тексты страниц на который перейдем с главной страницы index.php

Таблица categor - включает данные по категориям в пункте портфоло, то есть в ней информация о дизайне, 3 д и т.д.

Таблицы design 3dgrafics основные, в них информация о работах.

Правильно ли я делаю или нет?

Или же надо всю инфу в одну таблицы загонять?

И как сделать чтобы один код php выводл каждую страницу по нажатию на работу, чтобы не делать отдельный файл, например design.php и т.д.

То есть генерировался динамически.

Заранее спасибо!

Всегда на высоте (http://urik.i-vladex.com/)
DG
На сайте с 07.01.2007
Offline
53
#1

Как я понимаю работа-то по сути - однотипный "элемент", то есть есть название работы, ее описание, сопровождающий рисунок. Ну и тип работы - 3д, арт, сайт и т.п.

Я бы все загнал в одну таблицу:

id, title, description, type, date

Тип (type) соответственно может быть как строка для улучшения понимания (3d, art и т.п.), так и число.

Это самый простой вариант, но позволяет выводить и все последние работы по дате и сортировать по типу работы, по названию без особых проблем (в запросе из одной таблицы).

мой блог - заработок в сети (http://izombie.ru)
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#2

Учебник по PHP+MySQL не пробывали читать?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
Alipapa
На сайте с 01.02.2008
Offline
234
#3

Вам можно взять готовую cms - там уже весь функционал есть и база данных тоже. Определиться, как удобнее реализовать портфолио - каталогом статей либо каталогом ссылок, а может быть - приспособить под это дело галерею. Ну и заточить эту cms под себя. А механизм подкатегорий прост - в таблице категорий создается поле, в котором содержится идентификатор родительской категории - и можно хранить данные любого уровня сложности. Осталось реализовать удобный интерфейс. Нечто подобное у меня реализовано для одной из cms, см. подпись. Посмотрите структуру БД, поюзайте - постепенно всё станет понятно.

Биржа фриланса - простая и удобная (http://kwork.ru/ref/2541)
Linkpusher
На сайте с 28.12.2007
Offline
176
#4
vladex:
Создана база данных portfolio с таблицами settings categor design 3dgrafics.
Таблица settings - включает тексты страниц на который перейдем с главной страницы index.php
Таблица categor - включает данные по категориям в пункте портфоло, то есть в ней информация о дизайне, 3 д и т.д.
Таблицы design 3dgrafics основные, в них информация о работах.

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

Изобразите таблицу наглядно, пожалуйста, можно так:

id записи, id родителя, запись, специфическое поле 1, специфическое поле 2, етк...

Точу ножи. Буквально. Есть отзывы. Заказать заточку в МСК и Подольске можно через Телеграмм.
vladex
На сайте с 21.12.2008
Offline
9
#5

Неужели никто не поможет с проблемой?!

alexspb
На сайте с 14.11.2005
Offline
187
#6
vladex:
Неужели никто не поможет с проблемой?!

Проблема в чем? Писать вроде умеете, наверное и читать тоже.

Делайте как удобнее вам и старайтесь не задавать вопросов, ответ на которые потребует перепечатки учебников.

Смотрите чужие скрипты, научитесь "читать" их.

[Удален]
#7
vladex:
Неужели никто не поможет с проблемой?!

Два предыдущих топика - не помогло? По-моему, толково вам подсказывают. Что вы хотите еще? Как вам помочь?

Linkpusher
На сайте с 28.12.2007
Offline
176
#8
vladex:
Неужели никто не поможет с проблемой?!

легко: http://segfault.kiev.ua/smart-questions-ru.html

vladex
На сайте с 21.12.2008
Offline
9
#9

Вот еще примерная структура сайта ->>>>

[align=center][/align]

Логика работы следующая-

Нажимаем на ссылку ПОРТФОЛИО на первом рисунке - ссылка такая

/portfolio.php

Загружается страница которую представляет рисунок ВТОРОЙ.

Эта страница выводится с помощью цикла


function two_column($arr)
{
$m1 = array();
$m2 = array();
foreach($arr as $key=>$val)
{
if ($key%2 == 0)
$m1[] = $val;
else
$m2[] = $val;

}
return array('m1'=>$m1, 'm2'=>$m2);
}
$result = mysql_query ("SELECT * FROM portfolio ORDER BY id") or print mysql_error();

if ((mysql_num_rows($result))!=0)
{
$ret_arr = array();
while ($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$ret_arr[] = $row;
}
}
$arr = two_column($ret_arr);
$c = sizeof($arr['m2']);
for ($i=0; $i<=$c; $i++ )
{
if(isset($arr['m2'][$i]) && isset($arr['m1'][$i])){
print "
<table align='center' class='listing'>
<tr>
<td class='list'>
<img class='img' alt='{$arr['m1'][$i]['alt']}' align='left' src='{$arr['m1'][$i]['mini_img']}'>
<a class='href_l' href='portfolio.php?page={$arr['m1'][$i]['id']}'>{$arr['m1'][$i]['title']}</a>
<p class='date'>Последнее обновление:{$arr['m1'][$i]['date']}</p>
<p class='date'>Автор:{$arr['m1'][$i]['author']}</p>
</td>
<p>&nbsp;</p>
<td class='list'>
<img class='img' alt='{$arr['m2'][$i]['alt']}' align='right' src='{$arr['m2'][$i]['mini_img']}'>
<a class='href_r' href='portfolio.php?page={$arr['m2'][$i]['id']}'>{$arr['m2'][$i]['title']}</a>
<p class='date'>Последнее обновление:{$arr['m2'][$i]['date']}</p>
<p class='date'>Автор:{$arr['m2'][$i]['author']}</p>
</td>
</tr></table>";
}
}

В отображенной таблице напротив каждого типа работ ссылки уже с переменной page

Вид ссылок

portfolio.php?page=design

Следующий шаг, выбор ссылки и нажатие на нее.

Грузится страница которая на третьем рисунке, то есть со списком работ, и у каждой работы ссылка уже такая

portfolio.php?page=design&id=1

Нажимаем на нее и наконец появляется крайняя страница которая на самом последнем рисунке.

Вот как мне сделать вывод 2,3 и 4 - го рисунка в одной странице, я имею ввиду код.

Я думаю необходимо применять логику if ... else, но я не могу сообразить как лучше сделать таблицы базы mysql

То ли делать общую таблицу на все работы, либо на каждую отдельную, но тогда как выводить их оператором SELECT.

Подайте плиз информационные "пинки". Только без слов "ЧИТАЙ маны, документацию" или "Такое уже писали тебе".

За прошлые ответы спасибо.

alexspb
На сайте с 14.11.2005
Offline
187
#10

Как они выводиться будут - неважно. Надо разобраться с иерархией: что является разделом, что является подчиненной страницей. Решается это введением дополнительного поля parent_id (т.е. ссылкой на id который выше уровнем и котором подчинен данный id) (не пишу все решение - догадаетесь дальше - будуте себя сильно уважать ))))

про рисунки.

они принадлежат какой-то записи, у этой записи есть id

значит можно решить с таблицей, в которой будете хранить ссылки на рисунки, но для идентификайии в этой таблице нужно поле с идентификатором дизайна, к которому относятся рисунки. выборку из этой талицы делать с уловием: WHERE `design_id` = 'id' (т.е. подставите 'номер_скриптом')

в вашем случае - это отдельный запрос

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий