Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] kilka tabel czy puste pola
Forum PHP.pl > Forum > Bazy danych
Papub
Witam,
patrzac na schemat bazy danych dla joomli widzę, że nie przejmują się marnotrawieniem miejsca w bazie danych, może być pełno pustych wartości. Czy to jest ukłon w stronę wydajności?
Zacząłem pisać aplikację która do opisu pojedyńczego artykułu potrzebuje 6 tabel. Pierwsza tabela zawiera kolumny których wartości są obowiązkowe a pozostałe tabele mają klucze obce powiazane z kolumna id pierwszej tabeli. Jednak jak tak pomyslalem to jest tu od cholery OUTER JOINOW. Wyciągniecie jednego artykulu z bazy wymaga bardzo długiego zapytania. Jaki jest złoty środek? Niby tak jak zrobiłem powinno być, nie marnujemy miejsca itd ale z drugiej strony koszt tych outer joinow, utrzymywania tylu tabel wydaje mi się trochę nadmiarowy. Jak wy do tego podchodzicie? Pozdrawiam
nospor
6 tabel na jeden artykuł to chyba lekka przesada.... Może pokaż co natworzyłeś to będzie można się do tego jakoś ustosunkować
Papub
Podsyłam link do obrazu
http://imageshack.us/photo/my-images/651/45780177.jpg/

tabela akrtykuły zawiera tylko pola które zawsze będą wypełnionie. Poztałe tabele mogą być uzupełnione, bądź nie muszą, zależy od konfiguracji artykułu i uzupełnienia.
nospor
Daty oraz opcje publikacji ma być w głównej tabeli. Fragment pewnie też, choć niewiem co to jest u ciebie
Papub
Daty to start publikacji i koniec publikacji. Czyli jeżeli użytkownik nie poda zostają puste. Faktycznie autor i data utworzenia będą zawsze pełne więc powinny być w tabeli głównej. Fragment to fragment artykułu podany przez użytkownika zmiast przycinania substringiem ciągu w php
nospor
No to wszystko się zgadza. Wszystko to co ci napisałem ma być w jednej tabeli.
Papub
No to jak wrzucę daty i fragmenty do tabeli głównej to w 99% przypadków (wierszy) będzie te pola miało puste. Dlaczego tak?
nospor
Bo tak smile.gif
Poza tym artykuł chyba piszesz po to by go opublikować więc raczej daty będą prawie zawsze wypełnione. A nawet jak nie, to i tak dla tego celu nie robi się kolejnych dwóch tabel.....
Ustawiasz pole na null i po sprawie.
Papub
To kiedy trzymamy się zasady żeby nie pozostawiać pustych pól tylko tworzyć tabele z kluczem obcym? Zasada na wyczucie? smile.gif
viking
A skąd niby taka zasada?
http://pl.wikipedia.org/wiki/Posta%C4%87_n...8bazy_danych%29
nospor
A żeś się tych pustych pól przyczepił.... pola jak to pola, raz będą wypełnione raz nie. Wszystko zależy jak leży a w tym konkretnym przypadku to wszystko ma być w jednej tabeli smile.gif
Co innego jakbyś miał 300 pól, z których będziesz korzystał raz na jakiś czas. Wówczas tworzysz dla nich oddzielną (jedną) tabelę. Ale nie w tym przypadku. Tutaj z dat będziesz korzystał cały czas i nie ma najmniejszego sensu joinować kolejnych tabel.
Papub
Dobra. Dzięki za pomoc. Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.