szahmatt
14.01.2015, 22:27:31
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
14.01.2015, 22:35:20
Szukaj haseł: projektowanie baz danych, relacje, postacie normalne, normalizacja bazy danych
szahmatt
14.01.2015, 22:42:47
Czyli rozumiem że mam przerobić tak?
markuz
14.01.2015, 23:00:14
Jeżeli wiążesz jakąkolwiek przyszłość z tą stroną to musisz ją przerobić.
szahmatt
14.01.2015, 23:16:27
Dziękuję bardzo!
Zaraz się zabieram do czytania.
Pyton_000
15.01.2015, 00:16:21
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
15.01.2015, 01:20:53
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
15.01.2015, 08:41:47
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
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

Właśnie zoptymalizowałem bazę 10x
Forti
15.01.2015, 10:36:15
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

Właśnie zoptymalizowałem bazę 10x

Rozwiń myśl

nie wiesz przecież jakie dane on trzyma w tabeli. Jestem ciekaw twojego sposobu myślenia w tym wypadku.
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
szahmatt
15.01.2015, 20:18:44
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
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
Pyton_000
15.01.2015, 20:40:10
No to już rozwiązanie dostałeś

Teraz musisz to tylko okodować w odpowiednie tabele.
A tymczasem uciekam na HotS'a
szahmatt
16.01.2015, 00:03:07
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

Mógłbyś jaśniej, bo naprawdę nic nie załapałem. Chociaż jakiś obrazek, albo trochę bardziej szczegółowo.
Dzięki
Pyton_000
16.01.2015, 00:18:25
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.