W kwestiach wizualnych z zasady się nie wypowiadam, gdyż to akurat jest moja słaba strona...
O HTML/CSS widzę, że dostałeś sporo uwag/propozycji, ja natomiast chciałbym skupić się na MySQL. Podajesz jego znajomość na ponad 50% co wg mnie jest nieco ryzykowne, a wyjaśnię to na przykładzie bazy jaką udostępniach na projekcie Roshar:
- proponuję dać "DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci" dla tabel, polskie znaki diaktryczne są zawarte w unicode_ci, a nigdy nie masz pewności, czy nie będziesz chciał użyć znaków z innych alfabetów - zawsze tworząc bazę zadaj sobie pytanie "Czy jestem w 101% pewien, że nigdy nie użyję innych danych niż te, dla których robię ograniczenia?". W bazach danych nie ma "może", "chyba", jest albo TAK albo NIE.
- pole user jako TEXT wydaje mi się bez sensu. Dlaczego nie VARCHAR, z ograniczeniem np. do 50 czy 100 znaków?
- To samo pole link...
- pole date bez sensu jako text. Przemyśl co dokładnie tam potrzebujesz trzymać i daj np. DATE, DATETIME, TIMESTAMP itp. w zależności od typu danych i sposobu ich wykorzystania. I tutaj ponownie patrz pkt. 1. Jeśli dasz DATE to nie przechowujesz czasu. Zastanów się, czy istnieje ryzyko, że kiedyś będziesz musiał/chciał użyć czasu dodania rekordu? Jeśli tak to może DATETIME/TIMESTAMP (różnicę między nimi zostawiam jako kwestię do poczytania i własnej analizy).
- po co Ci zapis w id INT(11), chodzi mi o te 11? Czy wiesz do czego się to odnosi i jaki ma sens? Nie jest to błąd, ale wbrew pozorom nie oznacza to, że ograniczasz pole do maksymalnie 11 cyfr. Jest to powiązane z tzw. wypełnieniem ZEROFILL, co jednak przy indeksach raczej nie występuje. Możliwe, że masz to zrobione nieświadomie, bo wiele programów do MySQL dodaje to (11) ale warto wiedzieć czym to jest, a dokładniej czy nie jest.
- po co tak zmieniasz i latasz między różnymi kodowaniami znaków? Nie twierdzę, że to błąd, nie analizuję dokładnie całej aplikacji, ale zastanów się czy na pewno ma to sens.
- Jeżeli w INSERT INTO podajesz po kolei wszystkie pola z danej tabeli to nie musisz ich wyszczególniać, wystarczy INSERT INTO all_comments VALUES (), (), ()...
- dot. pkt. 7 - jeżeli zakładasz dla id AUTO_INCREMENT to nie podawaj ręcznie wartości id tylko przekaż null i numerację pozostaw bazie. Jest to bezpieczniejsze i de facto po to właśnie służy AUTO_INCREMENT
- nie określaj ręcznie wartości AUTO_INCREMENT, chyba, że w jakimś bardzo jasno określonym celu ale i tutaj zastanowiłbym się czy na pewno jest to dobra droga - jeśli tak uważasz, to cofnij się krok wstecz i jeszcze raz przeanalizuj strukturę i zobacz, czy ponownie dojdziesz do takich samych wniosków
- Indeksy, np. PRIMARY KEY możesz dodawać od razu podczas tworzenia tabeli, nie musisz później oddzielnie dodawać różnych indeksów (u Ciebie akurat tylko PK, ale są także inne),
- tabele komentarze_1, komentarze_2 itd. to w zasadzie takie same tabele. Po co tworzysz ich tyle? Nie lepiej jedną i ewentualnie dodać jakieś dodatkowe pole określające np. typ_komentarza (i tutaj będzie odniesienie do typ 1, typ 2 itp.).
- w powiązaniu z pkt. 10 - po co w kilku tabelach ręcznie podajesz pole user? Tylko prosisz się w ten sposób o problemy i błędy logiczne. Proponuję podawać id z tabeli, gdzie przechowujesz użytkowników i powiązać je tabelą pośrednią (tzw. relacja wiele do wielu, jeden do wielu itp.).
Taka uwaga generalna, to żebyś poczytał sobie o typach danych w MySQL, ich zakresach, możliwych wartościach itp. bo u Ciebie wszystko jest TEXT :)
Kolejna kwestia to poczytaj o takich tematach jak złączenia tabel (JOIN, LEFT JOIN, RIGHT JOIN i innych metodach), zabezpieczania w formie kluczy obcych FOREIGN KEY.
Nie odbieraj tych uwag jako jakąś mocną krytykę itp. Jesteś początkujący, więc daję Ci tylko wskazówki na co zwrócić uwagę, co poczytać itp. Do tego czasu proponuję jednak nieco zjechać z poziomem znajomości MySQL - nie mówię tego złośliwie, wręcz przeciwnie, zbyt wysoki poziom samooceny naraża Cię na pytania od potencjalnego pracodawcy i tutaj mógłbyś mieć pewne problemy.
Masz dobrą bazę do nauki refaktoryzacji i optymalizacji MySQL więc jeśli chcesz to spróbuj nad nią popracować i wróć w tym lub osobnym wątku to pomożemy ją doszlifować :)
Pozdrawiam