Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Planowanie bazy - relacja wiele do wielu
Forum PHP.pl > Forum > Bazy danych > MySQL
Lynks
Witam, na początek krótkie streszczenie.
Serwis przechowuje informacje o sklepach/punktach naprawczych rowerów/części rowerowych, a także o dodatkowych usługach jakie dany punkt oferuje. Zaplanowałem:
tabelę sklep(zawiera dane teleadresowe i krótki opis),
tabelę marki_sprzętu(tabela słownikowa ok. 100 rekordów),
tabelę usługi(ponownie tabela słownikowa ok. 20 rekordów).
Użytkownik dodający swój punkt do bazy może wybrać obsługiwane marki sprzętu, tu pojawia się problem bowiem może zaznaczyć zarówno jedną, jak i wszystkie marki. Chciałem to zrealizować poprzez dodatkową tabelę przechowującą id_sklepu i id_marki jednak przy początkowych założeniach 3000 punktów i 100 marek (plus to,że większość użytkowników zaznaczyła wszystkie marki) daje mi tabelę na ok. 300000 rekordów.
Tabele sklep i usługi połączone w sposób jak wyżej.
Czy taka struktura zapewni optymalną wydajność wyszukiwań (przy założonym ruchu ok 100000 zapytań dziennie), czy możecie polecić mi jakieś bardziej wydajne rozwiązanie?

Pozdrawiam Lynks
vokiel
Możesz umieścić to w jednym polu np po przecinku. Później odbierając dane z zapytania rozbić to po tym przecinku.
Lynks
Ale takie rozwiązanie generuje problemy przy wyszukiwaniu punktów sprzedających konkretną markę.
Przy moim podejściu robię w sumie proste złączenie. Przy wpisaniu wartości do jednego pola muszę kombinować z LIKE (chyba wolniejsze niż JOIN ?)lub zastosować pole typu SET, które przechowuje niestety "tylko" 64 wartości.
vokiel
A użycie w sql in() ? Też da Ci złączenie i będzie w jednym zapytaniu.
Lynks
Szczerze mówiąc nie potrafię sobie wyobrazić jak mógłbym tego użyć - czy mógłbyś pokazać jakiś przykład?
PS. Wiem jak działa funkcja IN() smile.gif
vokiel
przykładowo:
  1. SELECT `CATEGORY`.`ID`, `CATEGORY`.`NAME` FROM `CATEGORY` WHERE `CATEGORY`.`ID` IN((SELECT `CATEGORY_ID` FROM `PRODUCTS` WHERE `PRODUCTS`.`ID`<100));
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.