Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][SQLite]Tabele bazy danych, jedna czy kilka? Filozofia...
arstherapia
post
Post #1





Grupa: Zarejestrowani
Postów: 88
Pomógł: 1
Dołączył: 13.08.2014

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


Witajcie ponownie,

dzisiaj natknąłem się na kolejny problem: jak zaplanować efektywnie strukturę bazy danych?

W jednej tabeli mam:

1. Nazwa_filmu
2. Opis_filmu
3. Okładka (link)
4. Autor
5. Autor_bio
6. Autor_fot (link)
7. Wersja_jezykowa
8. Cena
9. Premiera ( tak, nie )

i chciałem dodać kategorię, ale uzmysłowiłem sobie, że jedna komórka może przyjmować tutaj wiele wartości:
terapia poznawcza, terapia behawioralna, etc.

Poczytałem i znalazłem taką zasadę, aby nie wciskać wielu wartości w jedną komórkę, więc rozwiązaniem jest
osobna tabela, a tam np.

1. Kategoria_ID
2. Nazwa_kategorii

Czy to ma sens? Jak pożenić zapytania i wyświetlenia pól z tabel ?

To może autorów też wrzucić w osobną tabelę? Wtedy byłyby trzy:

1. Filmy
2. Kategorie
3. Autorzy

A w przyszłości:

4. Klienci
5. Zamówienia

Pozdrawiam,

Rafał

--------------------------
Tak sobie dalej myślę, że jeśli utworzę kilka tabel, to będę mieć między nimi relacje, czyli będę musiał nauczyć się i używać inner join itp. ...
Prościej byłoby np. zamiast tabeli - "kategorie" utworzyć osobną kolumnę w tabeli filmy i tam wpisywać kategorię.

Zamotałem się.

Ten post edytował arstherapia 3.09.2014, 23:14:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Rozwiązanie to ma w sobie ograniczenie, że jeden film może być w dwóch kategoriach.
Powinienies zrobic tabele łączącą jak ci pisalismy...

Cytat
Ciągle chodzi mi po głowie pokusa, tak jak kiedyś chciałem całkiem uniknąć sql'a, to teraz chciałbym to utrzymać
w jednej tabeli, nawet wbrew redundancji danych. W końcu to góra 200 filmów, ruch niewielki...
Jak juz sie uczysz, to rob to porządnie i nie wydziwiaj
Go to the top of the page
+Quote Post
arstherapia
post
Post #3





Grupa: Zarejestrowani
Postów: 88
Pomógł: 1
Dołączył: 13.08.2014

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


Cytat(nospor @ 4.09.2014, 17:52:33 ) *
Jak juz sie uczysz, to rob to porządnie i nie wydziwiaj


Dobrze, Szefie.


Chyba mam jakiś czeski błąd, albo źle myślę:

  1. $result = $db->query('SELECT * FROM filmy, kategorie WHERE filmy.Kategoria = kategorie.rowid = 1');


Chciałem wylistować wszystkie filmy z tabeli filmy, wybierając te pozycje, które w polu "Kategoria" mają wpisaną jedynkę,
która ma odpowiadać polu "rowid" też numerek 1.

Ale, listuje wszystkie. Pewnie źle rozumiem JOINy, albo mam czeski błąd. Pewnie oba. Naprowadźcie proszę.

W sumie to bezsensu to moje zapytanie:)

Przecież mogę wylistować z jednej tabeli, wybierając tylko where Kategoria = 1 .... To po co mi ta druga tabela z kategoriami w takim razie? I jak przypisać dwie kategorie do jednego filmu?

Błądzę w ciemnościach... wszędzie mrok.

----------------------------------------------------
Dobra, to kumam tak:

1. Druga tabela tylko w celach redundancji.
2. Listuję tylko z jednej tabeli, filmy. Ale nawet wtedy listuje mi wszystkie pozycje:

  1. $result = $db->query("SELECT * FROM filmy
  2. WHERE Kategoria='1'");


Ale ja głupi jestem:)

Dałem w złym miejscu... teraz kod wygląda tak:

  1. <?php
  2. $db = new PDO('sqlite:ars.sqlite');
  3. ?>
  4.  
  5. <div class="section_header">
  6. <div class="row"><div class="col-lg-12">
  7. <h3>Premiery z polskimi napisami</h3>
  8. <hr />
  9. </br>
  10. </div></div>
  11. </div>
  12.  
  13. <div class="container my-container">
  14.  
  15.  
  16. <!-- Drugi rząd -->
  17. <div class="row">
  18. <?php
  19. $result = $db->query("SELECT Okladka FROM filmy WHERE Kategoria='1'");
  20. foreach($result as $row)
  21. { echo '<center><div class="col-lg-2"><img src="'.$row['Okladka'].'" class="picColor"/> </div></center>';}
  22. ?>
  23. </div>
  24. <div class="row">
  25. <?php
  26. $result = $db->query("SELECT Nazwa FROM filmy WHERE Kategoria='1'");
  27. foreach($result as $row)
  28. { echo '<center><div class="col-lg-2"><a class="btn btn-default" href="product_view.php?Nazwa=' . ( $row['Nazwa'] ) . '">Zobacz film</a></div></center>';}
  29. ?>
  30. </div>
  31. </div>


Niestety, nadal nie wiem, jak przypisać dwie kategorie do jednego filmu.
Czy dopuszczalne jest w polu tabeli podanie dwóch, trzech wartości, np. [1, 3, 5] ?

Ten post edytował arstherapia 5.09.2014, 21:55:29
Go to the top of the page
+Quote Post

Posty w temacie
- arstherapia   [MySQL][SQLite]Tabele bazy danych, jedna czy kilka? Filozofia...   3.09.2014, 21:39:48
- - luniak   [PHP] pobierz, plaintext Tak sobie dalej myślę, że...   4.09.2014, 05:54:10
- - zidek   Jeśli każdy film ma jednego autora, a każdy autor ...   4.09.2014, 08:08:24
- - mmmmmmm   Jeśli mowa o filmach to jeszcze lepiej zrobić jesz...   4.09.2014, 08:27:15
- - phpion   @mmmmmmm: Po co w tej tabeli osobna kolumna na klu...   4.09.2014, 08:41:09
|- - mmmmmmm   Cytat(phpion @ 4.09.2014, 09:41:09 ) ...   4.09.2014, 09:07:55
- - nospor   w Film_kategoria tez nasz oddzielne ID i a dobrą s...   4.09.2014, 08:48:34
- - phpion   Zgadza się, dlatego napisałem "jeśli założyć...   4.09.2014, 08:50:47
- - nospor   No to jesli zalozyc, ze interesuje nas tylko autor...   4.09.2014, 08:54:07
- - arstherapia   O cholera ! Bardzo Wam dziękuję, muszę teraz ...   4.09.2014, 08:54:46
- - nospor   CytatPiszecie, że należy unikać powtarzania się da...   4.09.2014, 09:01:28
- - phpion   Oczywiście w tym o czym pisze ~nospor należy zacho...   4.09.2014, 09:09:18
- - nospor   CytatOczywiście w tym o czym pisze ~nospor należy ...   4.09.2014, 09:16:03
- - arstherapia   W footerze sklepu, jak już go sobie napiszę, umies...   4.09.2014, 14:57:46
- - Turson   Jak na moje dodaj primary keys typu film_id, osoba...   4.09.2014, 15:01:48
- - arstherapia   Dobrze, Turson, dziękuję !   4.09.2014, 15:04:35
- - nospor   CytatRozwiązanie to ma w sobie ograniczenie, że je...   4.09.2014, 16:52:33
|- - arstherapia   Cytat(nospor @ 4.09.2014, 17:52:33 ) ...   5.09.2014, 21:00:36
- - nospor   Po pierwsze: pisalem juz ci kiedys, ze jak chcesz ...   6.09.2014, 06:35:02
- - arstherapia   I dostało mi się słuszny OPR od nospor'a Fa...   6.09.2014, 11:28:22


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: 9.10.2025 - 15:33