Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Projekt bazy dla katalogu on-line, Prośba o podpowiedź
pszczółek
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 3.04.2009

Ostrzeżenie: (0%)
-----


Witam,
mam małą prośbę, proszę o pomoc w rozwiązaniu problemu.
Robię taki mały projekcik, dokładnie katalog on-line(wprowadzanie danych, wyszukiwanie publikacji, czy autorów) magazynu który pojawia się 2 razy w roku. Jest to zbiór publikacji naukowych. Problem wyskoczył mi po tym jak poprosiłem kolegę o pomoc z pewnym prostym INSERTem. Stronę www i bazę stworzyłem, już byłem happy, nagle przy tworzeniu formularza pojawiło mi kilka wątpliwości. Chodzi o:
Występuje połączenie każdy z każdym, tj. każda publikacja może mieć wielu autorów, każdy autor może mieć wiele publikacji. Dlatego też chodzi mi o jakiś pomysł żeby mój system był tak zaprojektowany by uniknąć powtarzania się rekordów w którejś (lub w każdej (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) ) z tabel. Chodzi mi o zrobienie tak tego że np. w przypadku podawania kilka razy tego samego autora żeby nie został mu nadany inny identyfikator.
Początkowo wyglądało to na proste zadanie, lecz tak nie jest (dla mnie).
Kolega podpowiedział mi także że można utworzyć sztuczną tabele, ale o tym zaraz..przedstawię Wam strukturę bazy:
  1. -- Struktura tabeli dla `autorzy`
  2. --
  3.  
  4. CREATE TABLE IF NOT EXISTS `autorzy` (
  5. `id_autor` int(4) NOT NULL AUTO_INCREMENT,
  6. `imie` varchar(20) COLLATE utf8_polish_ci NOT NULL,
  7. `nazwisko` varchar(40) COLLATE utf8_polish_ci NOT NULL,
  8. `id_publikacja` int(5) NOT NULL,
  9. PRIMARY KEY (`id_autor`),
  10. UNIQUE KEY `id_publikacja` (`id_publikacja`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=4 ;
  12.  
  13. --
  14.  
  15. -- --------------------------------------------------------
  16.  
  17. --
  18. -- Struktura tabeli dla `numery`
  19. --
  20.  
  21. CREATE TABLE IF NOT EXISTS `numery` (
  22. `id_numer` int(3) NOT NULL AUTO_INCREMENT,
  23. `numer` int(3) NOT NULL,
  24. `czesc` int(2) NOT NULL,
  25. `rok` int(5) NOT NULL,
  26. `id_publikacja` int(5) NOT NULL,
  27. PRIMARY KEY (`id_numer`)
  28. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=2 ;
  29.  
  30. --
  31.  
  32. -- --------------------------------------------------------
  33.  
  34. --
  35. -- Struktura tabeli dla `publikacje`
  36. --
  37.  
  38. CREATE TABLE IF NOT EXISTS `publikacje` (
  39. `id_publikacja` int(5) NOT NULL AUTO_INCREMENT,
  40. `temat` varchar(600) COLLATE utf8_polish_ci NOT NULL,
  41. `sl_kl` varchar(400) COLLATE utf8_polish_ci NOT NULL,
  42. `strona` int(3) NOT NULL,
  43. `link` varchar(300) COLLATE utf8_polish_ci NOT NULL,
  44. `id_numer` int(3) NOT NULL,
  45. `id_autor` int(4) NOT NULL,
  46. PRIMARY KEY (`id_publikacja`)
  47. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=2 ;
  48. --
  49.  
  50. -- --------------------------------------------------------
  51.  
  52. --
  53. -- Struktura tabeli dla `sztuczna`
  54. --
  55.  
  56. CREATE TABLE IF NOT EXISTS `sztuczna` (
  57. `id_autor` int(4) NOT NULL,
  58. `id_publikacja` int(5) NOT NULL
  59. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
  60.  
  61. --

Teraz tak..Kolega podpowiedział mi właśnie o tej tabeli "sztuczna" żeby w niej przechowywać tylko powiązanie identyfikatorów publikacji i autorów, będzie w jednym miejscu i będzie łatwiejsze wyszukiwanie, tylko teraz mi podpowiedzcie mi jak to zrobić.. bo jestem w kropce (przynajmniej dzisiaj, siedze nad tym już 8 h (IMG:http://forum.php.pl/style_emoticons/default/sadsmiley02.gif) )
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 11:19