Как организовать базу данных MYSQL? - PullRequest
2 голосов
/ 26 мая 2011

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

Iхочу создать список файлов на странице.Должно быть 4 поля:

  • Имя - название файла
  • Единицы - к каким из выбранных единиц этот файл относится (пример: 27 или X1 или 10), я хочу иметь возможность добавлять несколько единиц в некоторые файлы.
  • Typeof - Какой это тип файла (пример: swf, pdf, url).
  • Проект - Для какого проекта был создан файл (например: сексуальное здоровье, информационная грамотность)
  • Результаты - Это должно быть в состояниисохраните числа 1-5, чтобы один файл мог иметь (1,3 и 5)

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

Проблема в том, что файлы могут и должны появляться на странице несколько раз, поскольку некоторые файлы имеют несколько блоковно я не могу думать, как лучше всего это сделать, поиск по индексу строки кажется грязным.

Чтобы помочь визуализировать то, что я хочу, вот изображение того, как будет структурирована страница: как будет структурирована страница http://biteof.com/example.bmp

Ваша помощь очень ценится благодаря.

Что у меня такдалеко:

  name    text                       utf8_unicode_ci 
  typeof set('swf','fla','web','pdf') utf8_unicode_ci  No None                
  units text utf8_unicode_ci  No None                
  url text utf8_unicode_ci  No None                
  project set('sexual health','information literacy','experimental') utf8_unicode_ci  No None                
  outcomes text utf8_unicode_ci  No None                

@ Ник:

<?php 
$query = "SELECT * FROM `repository` WHERE `units` = '27' LIMIT 0, 999 ";
$result=mysql_query($query) or die(mysql_error()) ;
$num = mysql_num_rows($result);

$i=0;
while ($i < $num) {

$name=mysql_result($result,$i,"name");
$filetype=mysql_result($result,$i,"typeof");
$project=mysql_result($result,$i,"project");
$units=mysql_result($result,$i,"units");
$url=mysql_result($result,$i,"url");

echo "File name: ".$name."<br>";
echo "Units: ".$units."<br>";
echo "In project: ".$project."<br>";
echo "Url: ".$url."<br>";

$i++;
}
?>

Ответы [ 2 ]

2 голосов
/ 26 мая 2011

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

Возможно, вам следует объединить таблицу.

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

Решено:)

Я решил создать новую таблицу для каждого юнита, потому что файл может быть одинаковым для разных юнитов, но результаты разные. остальную часть своей базы данных я сохранил и использовал php для сортировки, вероятно, ужасно структурированных БД ... вот мой код, если вам интересно:

<?php 
$table = array("301","302","310","311","25","26","27","28","29","1","2","3","4","8","10","X1","X2");
for ($a=0;$a<sizeof($table);$a++) {
$query = "SELECT * FROM `$table[$a]`";
$result=mysql_query($query) or die(mysql_error()) ;
$num = mysql_num_rows($result);
if ($num > 0) {
include($_SERVER['DOCUMENT_ROOT']."/units_and_evidence/units/".$table[$a].".php");
$projects = array();
for ($b=0;$b<$num;$b++) {
$project=mysql_result($result,$b,"project");
array_push($projects, $project);
}
$unique_projects = array_unique($projects);
for($c=0;$c<sizeof($unique_projects);$c++) {
$project_string = ucfirst($unique_projects[$c]);
print ('<div class="project"><h3>'.$project_string.'</h3>');
for($d=0;$d<$num;$d++) {
$name=mysql_result($result,$d,"name");
$project=mysql_result($result,$d,"project");
$typeof=mysql_result($result,$d,"typeof");
$url=mysql_result($result,$d,"url");
$outcomes=mysql_result($result,$d,"outcomes");
if ($project == $unique_projects[$c]) {
$outcomes_array= array();
for ($e=0;$e<strlen($outcomes);$e++) {
array_push($outcomes_array, $outcomes[$e]);
}
rsort($outcomes_array);
if ($typeof == swf) {
$proj = str_replace(' ', '', $project); 
$file = str_replace(' ', '', $url); 
print ('<li><a href="flashdelivery.php?proj='.urlencode($proj).'&file='.urlencode($file).'" class="'.$typeof.'selector">');
}
else {
print ('<li><a href="'.$url.'" class="'.$typeof.'selector">');
}
for ($f=0;$f<sizeof($outcomes_array);$f++) {
  print ('<span class="n'.$outcomes_array[$f].'"></span>');
}
print ('&raquo; '.ucfirst($name).'</a></li>');
}
}
print ('</div>');
}
print ("</ul>");
}
}
include($_SERVER['DOCUMENT_ROOT']."/footer.php"); 
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...