Blog tutorial – część 2

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.

3 komentarze do “Blog tutorial – część 2”

  1. Ł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ć.

    Odpowiedz
    • 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.

      Odpowiedz
      • 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.

        Odpowiedz

Dodaj komentarz

Ta strona używa Akismet do redukcji spamu. Dowiedz się, w jaki sposób przetwarzane są dane Twoich komentarzy.