Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: przerobić bazę? 200 kolumn - czy to ma prawo dobrze działać?
Forum PHP.pl > Forum > Bazy danych > MySQL
szahmatt
Witam serdecznie.
Tworzyłem sobie bazę i stronę do tego w php i w miarę jak ją pisałem, kolumn zaczęło przybywać.
Wymyślałem kolejne rzeczy które by mi pomogły zarządzać rekordami i pracowałem tylko na jednej tabeli w której teraz jest około 200 kolumn.
Wydawało mi się że przy około 500 rekordach nie będzie żadnego problemu, ale ostatnio rozmawiałem ze znajomym i mnie trochę nastraszył.

Co sądzicie, czy taka baza ma prawo poprawnie działać czy przerobić ją i całą stronę w PHP na mniejsze tabele?

Jeśli tak to poprosiłbym o polecenie jakieś materiałów na temat powiązań tablic itd, bo nie ukrywam że słyszałem wcześniej o takim czymś tylko z niewiedzy i zlekceważenia tego aspektu zrobiłem wszystko w jednej.

Pozdrawiam
kartin
Szukaj haseł: projektowanie baz danych, relacje, postacie normalne, normalizacja bazy danych
szahmatt
Czyli rozumiem że mam przerobić tak? biggrin.gif
markuz
Jeżeli wiążesz jakąkolwiek przyszłość z tą stroną to musisz ją przerobić.
szahmatt
Dziękuję bardzo!
Zaraz się zabieram do czytania.
Pyton_000
Nie podałeś ŻADNYCH konkretów co do tabeli.

200 kolumn typu tinyint to nic, 200 kolumn typu text to już coś, kolumny które można zastąpić czymś w innej bazie...
Można gdybać. Ogólnie nie jest wskazane aby nadmiernie przepakowywać ilość kolumn, ale to zależy od sytuacji.

Jak pokażesz strukturę to można pomyśleć.
szahmatt
Struktura wygląda tak:

60 x varchar(4)
60 x varchar(25)
60 x varchar(20)
+ 11 innych pól na adres, imie, nazwisko, tel, id itd.

Co myślisz?
Forti
Może łatwiej było by np. te 60x varchar(4) zrobić jedno pole typu text i serialize/deserialize? ;] Po kluczu odpowiednim jechać. Więcej roboty w samym php ale zdaje mi się, że jest to bardziej "lepsze" rozwiązanie.

Joiny tutaj dużo nie zmienią - można rozbić na kilka tabel po kilkadziesiąt kolumn i pobierać daną tabele tylko i wyłącznie gdy na prawdę jest potrzebna - dobrze to rozegrać i będzie gitara. Na pewno nie potrzebujesz tych 200 pól za każdym razem gdy odwołujesz się do użytkownika.
Pyton_000
Na moje oko to tutaj będzie max 15 kolum + 3 dodatkowe tabelki po 3 kolumny czyli razem 18 wink.gif Właśnie zoptymalizowałem bazę 10x smile.gif
Forti
Cytat(Pyton_000 @ 15.01.2015, 09:19:55 ) *
Na moje oko to tutaj będzie max 15 kolum + 3 dodatkowe tabelki po 3 kolumny czyli razem 18 wink.gif Właśnie zoptymalizowałem bazę 10x smile.gif



Rozwiń myśl wink.gif nie wiesz przecież jakie dane on trzyma w tabeli. Jestem ciekaw twojego sposobu myślenia w tym wypadku.
Pyton_000
Skoro ma po 60 szt. kolum w 3 rodzajach to domniemam że są one ponumerowane od 1-60.

Co za tym idzie utworzenie tabeli z 4 kolumnami (3 wyciągnięte jako rodzaj) + 1 na określenie numery kolumny z poprzedniej tabeli + jakieś FK + ID jak AI no to 7 kolumn (jedna tabelka).
+ kolejna tabelka z pozostałości po poprzedniej co daje nam razem 2 tabele i 18 kolumn razem smile.gif
szahmatt
Nie pomyliłeś się dużo.

Podsyłam kod, ale sądząc po waszej reakcji nie ma tragedii z tym, tak?
http://pastebin.com/BFCa9Suj
mmmmmmm
Szzaleństwo... Nazwisko VARCHAR(15) - BRZĘCZYSZCZYKIEWICZ nie wejdzie. Telefon - 50, email również... Zaszalałeś... Pola `m`, `d`, `kto` to poracha zupelna
Pyton_000
No to już rozwiązanie dostałeś smile.gif Teraz musisz to tylko okodować w odpowiednie tabele.

A tymczasem uciekam na HotS'a haha.gif
szahmatt
Cytat(mmmmmmm @ 15.01.2015, 20:25:20 ) *
Szzaleństwo... Nazwisko VARCHAR(15) - BRZĘCZYSZCZYKIEWICZ nie wejdzie. Telefon - 50, email również... Zaszalałeś... Pola `m`, `d`, `kto` to poracha zupelna


Rozumiem, zmienię to. Dzięki
15 na tel, 25 email i 35 na nazwisko będzie ok?

Cytat(Pyton_000 @ 15.01.2015, 19:59:51 ) *
Skoro ma po 60 szt. kolum w 3 rodzajach to domniemam że są one ponumerowane od 1-60.

Co za tym idzie utworzenie tabeli z 4 kolumnami (3 wyciągnięte jako rodzaj) + 1 na określenie numery kolumny z poprzedniej tabeli + jakieś FK + ID jak AI no to 7 kolumn (jedna tabelka).
+ kolejna tabelka z pozostałości po poprzedniej co daje nam razem 2 tabele i 18 kolumn razem smile.gif



Mógłbyś jaśniej, bo naprawdę nic nie załapałem. Chociaż jakiś obrazek, albo trochę bardziej szczegółowo.
Dzięki
Pyton_000
50 email, 50 nazwisko - więcej nie ma chyba sensu

Tabela 1
- id, imie, nazwisko ....

Tabela 2
- id
- tabel1_id
- numerek (1-60)
- m
- d
- kto
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.