W tej części naszego tutorialu, zajmiemy się stworzeniem bazy danych. Jeśli nie posiadasz żadnej wiedzy na temat baz danych, może być Ci trudno przebrnąć przez tę część – sugeruję więc zajrzeć do dostępnych w sieci materiałów na ten temat (np. na Wikibooks).
Aby utworzyć bazę danych wystarczy, że zwyczajnie zapiszemy kod SQL, który będzie tworzył nasze tabele. Z drugiej strony możemy skorzystać z pomocy narzędzi do projektowania baz danych – i właśnie to uczynimy. Na początek musimy zainstalować MySQL Workbench, ponieważ będziemy korzystać z tego darmowego rozwiązania. Sama instalacja powinna przebiec bez większych problemów, użytkowanie zresztą też jest bardzo intuicyjne. Nie będziemy tutaj oczywiście omawiać w jaki sposób korzystać z tego programu – jest on na tyle prosty, że każdy kto poświęci kilka minut na „przeklikanie” nie będzie miał większych trudności z przystąpieniem do projektowania bazy danych. Jeśli chcesz dowiedzieć się czegoś więcej o tej aplikacji, to możesz zajrzeć chociażby do tego artykułu na Webhosting.pl.
Mnie z pomocą MySQL Workbench udało się zaprojektować następującą strukturę:
Warto więc krótko przedstawić co znajdziemy w naszej bazie.
Tabela posts, będzie przechowywać wpisy w naszym blogu: id – to unikalny identyfikator, title – tytuł dla wpisu, body treść wpisu, a user_id to klucz obcy do tabeli „users”, który będzie identyfikował autora danego wpisu.
W tabeli users mamy pola: id – które jest unikalnym identyfikatorem użytkownika, pole username – które będzie przechowywać nazwę użytkownika, email – z emailem użytkownika (to pole wykorzystamy przy logowaniu do aplikacji) oraz password – które będzie przechowywać hasło w formie hashu.
Co dalej? Teraz możemy na tej podstawie wygenerować sobie kod SQL, który w innym wypadku musielibyśmy pisać samodzielnie. Przy tak małej i nieskomplikowanej bazie danych, nie jest to jakieś wielkie usprawnienie, ale w przypadku kiedy nasza baza składałaby się np. z 20-30 tabel, takie rozwiązanie jest bardzo pomocne. Sam proces projektowania bazy danych w ten sposób chyba wszyscy uznają za wygodny – niezależnie od wielkości bazy danych.
-- ----------------------------------------------------- -- Table `blogtutorial`.`users` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `blogtutorial`.`users` ( `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT , `username` VARCHAR(50) NOT NULL , `email` VARCHAR(50) NOT NULL , `password` VARCHAR(40) NOT NULL , PRIMARY KEY (`id`) , INDEX `login_idx` (`email` ASC, `password` ASC) ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `blogtutorial`.`posts` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `blogtutorial`.`posts` ( `id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT , `title` VARCHAR(100) NOT NULL , `body` TEXT NOT NULL , `user_id` MEDIUMINT UNSIGNED NOT NULL , PRIMARY KEY (`id`) , INDEX `fk_posts_user_idx` (`user_id` ASC) , CONSTRAINT `fk_posts_users` FOREIGN KEY (`user_id` ) REFERENCES `blogtutorial`.`users` (`id` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB;
No dobrze – mamy więc już kod SQL, który posłuży nam do zdefiniowania tabel w bazie danych. Jak widać poniżej przygotowałem też dane przykładowe, które dodadzą pierwszego użytkownika – dzięki temu będziemy mogli się zalogować do aplikacji.
INSERT INTO `users` VALUES (1, 'admin', 'admin@admin.dev', SHA1('admin'));
Hasło jest przechowywane w bazie pod postacią hashu SHA1. W tym momencie nie będziemy się zagłębiać w tematy bardziej bezpiecznych metod składowania haseł, ponieważ to wykracza poza ramy tego tutorialu. W następnej części zajmiemy się migracjami.

Ładnie.
Dzięki za udowodnienie, że w workbench faktycznie gdzieś jest ten Designer, bo jakiś czas temu miałem problem z nim. Będę musiał się bliżej mu przyjrzeć.
Manual php o funkcji SHA1:
It is not recommended to use this function to secure passwords, due to the fast nature of this hashing algorithm.
Lepiej to zrobić przez crypt.
Dzięki za komentarz, oczywiście masz rację :)
Hasło jest przechowywane w bazie pod postacią hashu SHA1. W tym momencie nie będziemy się zagłębiać w tematy bardziej bezpiecznych metod składowania haseł, ponieważ to wykracza poza ramy tego tutorialu.