Strona 1 z 1

[PHP][MySQL] Jak zaprojektować bazę

: 27 maja 2013, 14:01
autor: Sekhmet
Cześć
Pracuję nad pewnym projektem i napotkałem problem jak zaprojektować bazę by to działało jak najbardziej optymalnie.

Potrzebuję zapisania listy około 1000-2000 wpisów w bazie np. 1000 pytań w tabeli questions.
Użytkownik będzie miał dostęp do panelu w którym będzie mógł wyłączyć dla swojego konta dane pytanie.

Jak to ustawić?
Załóżmy że będzie tabela questions z 1000 wpisów z kolumnami
id|name|desc|answer

Potem tabela questions_disabled w których byłyby wpisy z kolumnami
question_id|user_id


Lecz obawiam się że to nie będzie zbytnio optymalne.
Dając dostęp do userowi do panelu z włączaniem/wyłączaniem pytań zaleję bazę zapytaniami dla każdego wylistowanego pytania czy użytkownik go wyłączył.

Mam kilka innych pomysłów ale są także bardzo szkodliwe dla bazy i nieoptymalne.

Jak najlepiej to rozwiązać?

Z góry dziękuję.
S.

Re: [PHP][MySQL] Jak zaprojektować bazę

: 27 maja 2013, 15:32
autor: Ralfp
Jak masz gdzieś wykorzystanie pamięci to dwa SQL. Pierwsze wyciąga wszystkie pytania a drugie pytania ukryte. Następnie na poziomie programu odsiej ukryte pytania. Można to optymalizując, cachując ID wszystkich pytań, następnie robiąc w aplikacji ID wszystkich \ ID ukrytych i tą listę wykorzystaj w drugim zapytaniu które wyciągnie pytania.

Alternatywą jest podzapytanie ale MySQL nie był pod nie specjalnie optymalizowany.... zresztą, nie był też optymalizowany pod zapytania IN, ale mielenie bazą danych po indeksach jest szybsze niż ciągłe wycieczki do bazy danych dla wielu indywidualnych zapytań.

Re: [PHP][MySQL] Jak zaprojektować bazę

: 31 maja 2013, 15:14
autor: Macsch15
Możesz też ID zablokowanych przechowywać w postaci zserializowanej dla konkretnego użytkownika a potem wyplewić przez kod przejmujący te dane.