Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem w projektowaniu bazy
quality
post
Post #1





Grupa: Zarejestrowani
Postów: 172
Pomógł: 9
Dołączył: 13.02.2006
Skąd: Warszawa

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


Witam
Napotkalem 2 problemy projektując bazę danych:

1. Mam 2 moduly - artykuly i galerie. Chcialbym zeby i galerie i artykuly mogly byc komentowane. I tutaj pytanie. Czy zrobic oddzielna tabele komentarzy dla galerii i artykulow, czy zrobic jedna tabele komentarze i dodatkowo 2 tabele "galerie -> wiele do wielu -> komentarze" i "artykuly -> wiele do wielu -> komentarze" ?

2. Drugi problem jest podobny. Mianowicie chodzi o to ze galerie, artykuly, programy itd posiadaja typy. I tutaj tez czy zrobic osobne tabele np: "typ_artykulow" itp czy zrobic jedna tabele
" typy" i dodatkowa "rodzaj_typow" (w ktorych znajda sie informacje o modulach do ktorych beda te typy nalezec)

Ps. Mam nadzieje ze nie zamotalem zabardzo. jak cos to przesle screeny z zamodelowana baza.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ddiceman
post
Post #2





Grupa: Zarejestrowani
Postów: 326
Pomógł: 121
Dołączył: 23.07.2008
Skąd: Wrocław

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


Triggery - jak dorbze pamietam - obecnie sa w MySQL tylko na silniku InnoDB i jezeli rzeczywiscie zalezy Ci na tym mechanizmie, to prawdopodobnie musisz to zrobic w brzydki sposob (podobno, jezeli chce sie powstrzymac MySQL przed wykonaniem zapytania, to nie da sie tego zrobic za bardzo elegancko):
  1. /* tabela w ktorej chcesz chronic pola l1, l2 */
  2. CREATE TABLE liczby1 (
  3. id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  4. l1 INT,
  5. l2 INT
  6. ) ENGINE = InnoDB;
  7.  
  8. /* tabela jedynie do sztucznego wywolywania bledow, z jedna krotka */
  9. CREATE TABLE trigger_trap(
  10. id TINYINT NOT NULL AUTO_INCREMENT PRIMARY KEY
  11. );
  12. INSERT INTO trigger_trap VALUE(1);
  13.  
  14. /* trigger */
  15. DELIMITER $$
  16. CREATE TRIGGER sprawdz_liczby BEFORE INSERT ON liczby1 FOR EACH ROW
  17. BEGIN IF (NEW.l1 IS NULL AND NEW.l2 IS NULL) OR (NEW.l1 IS NOT NULL AND NEW.l2 IS NOT NULL)
  18. THEN
  19. INSERT INTO trigger_trap VALUES (1); /* wywolanie puapki - duplikat wartosci */
  20. END IF;
  21. END $$
  22. DELIMITER ;
  23.  
  24. /* testowe kwerendy */
  25. INSERT INTO liczby1 value(NULL, NULL, 1);
  26. INSERT INTO liczby1 value(NULL, 1, NULL);
  27. INSERT INTO liczby1 value(NULL, NULL, NULL);
  28. INSERT INTO liczby1 value(NULL, 1, 1);
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: 11.10.2025 - 00:58