![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Piszecie, że należy unikać powtarzania się danych, a np. cena będzie się powtarzać, bo 80 % Nie o takie powtarzanie chodzi. filmów ma dwie ceny - 99 i 199 zł. Przykladowo nie ma sensu w kazdym filmie pisac wszystkich danych autora: Imie, nazwisko, adres, tel, - gdyz to jest bezsensownym powtarzaniem calej masy danych. Po to sie robi tabele Osoba by w niej zapisac RAZ dane osoby, a pozniej tylko przez ID sie do niej odwolywac. A co gdy osoba zmieni tel? Bedziesz latał po wszystkich rekordach i zmienial? A jak masz jeden rekord w tabeli osoba, to zmieniasz tel. tylko tam i wszystko gra. Tak, samo nie ma sesnu za kazdym razem pisac "angielska" i "polskie napisy". Tutaj masz wiele opcji do wyboru: 1) Tworzysz tabele WERSJE z rekordami: angielska, polskie napisy, blabla, a w filmie przekazujesz tylko ID wersji zamiast calego tekstu. 2) Zamiast pola varchar, walisz tinyint i zamiast tekstow "angielska" i "polskie napisy dajesz 1,2,3,4.... gdzie 1 to "angielska" , gdzie 2 to polskie napisy itd 3) zamiast polavarchar czy tinyint dajesz pole ENUM - poczytaj w manualu mysql. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 13:19 |