Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Kiedy potrzebna druga tabela?, ... czyli czy dla wszystkiego robić oddzielne tabele?
Asmox
post
Post #1





Grupa: Zarejestrowani
Postów: 359
Pomógł: 12
Dołączył: 16.01.2009

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


Zauważyłem, że często do różnych obiektów tworzy się dodatkowe tabele, a w głównej tylko ID pól w tamtych tabelach dla identyfikacji. Czasami mam wrażenie, że dla niektórych rzeczy to przesada i można po prostu wpisać normalną nazwę, bez odnośników do innych tabel. Chciałbym się dowiedzieć, kiedy takie działania są w granicach rozsądku i nie uciążliwe. W praktyce mam taką tabelę, z... powiedzmy odnośnikami do kursów online i tabelę z kategoriami kursów:
Kod
         +----+--------------+-----------+--------+------------------------------------------+------------+
         | ID | NAZWA        | KATEGORIA | LEKCJA | LINK                                     | OST_EDYCJA |
         +----+--------------+-----------+--------+------------------------------------------+------------+
         |  1 | Wprowadzenie | 0         | 1      | kursy-online/kurs-html/wprowadzenie.html | 2009-03-04 |
         |  2 | Znaczniki    | 0         | 2      | kursy-online/kurs-html/znaczniki.html    | 2009-03-04 |
         +----+--------------+-----------+--------+------------------------------------------+------------+

+----+-----------+
| ID | NAZWA     |
+----+-----------+
|  1 | Kurs HTML |
+----+-----------+

Zastanawiam się, czy nie byłoby lepiej, gdybym wykasował tę drugą tabelę, a w polu kategoria po prostu wpisywać normalne nazwy. Oszczędziłoby mi to robienia funkcji na wyciąganie nazwy kategorii z jego ID i przyspieszyło wyciąganie wszystkich rekordów z kategorią HTML. A jak wy myślicie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
vsemak
post
Post #2





Grupa: Zarejestrowani
Postów: 22
Pomógł: 2
Dołączył: 3.03.2009

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


1. nie musisz tworzyc dodatkowej funkcji przez JOIN w zapytaniu sql pobierzesz kursy razem z kategoriami.
2. kiedy tworzysz kurs, musisz prawdopodobnie z listy select (html) wybrać odpowiednią kategorię, z którą chcesz go powiązać. Gdyby nie istniała tabela z kategoriami, musiałbyś pobrać z tabeli z kursami niepowtarzające się nazwy kategorii. Z pewnością trwało by to dłużej niż zwykły select.
3. Gdybyś w tabeli kursy dodał pole "nazwa kategorii" to w przypadku 100 kursów na jedną kategorię nazwa tej kategorii będzie powtórzona 100 razy, a napewno zdajesz sobie sprawe z tego ze varchar zajmuje duzzo wiecej miejsca od INT'a.
4. itd.
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: 16.10.2025 - 23:45