• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[MariaDB] Prośba o code review pliku sql

VPS Starter Arubacloud
0 głosów
187 wizyt
pytanie zadane 13 stycznia w SQL, bazy danych przez whiteman808 Bywalec (2,170 p.)
edycja 13 stycznia przez whiteman808

Piszę zapytanie do MariaDB, które mam zamiar przełożyć później na kod php i proszę o code review pliku SQL

CREATE TABLE IF NOT EXISTS user_roles (
    id int(11) NOT NULL auto_increment,
    name VARCHAR(255) NOT NULL default '',
    PRIMARY KEY (id)
);

CREATE TABLE IF NOT EXISTS users (
    id int(11) NOT NULL auto_increment,
    username varchar(255) NOT NULL default '',
    passwd varchar(255) NOT NULL default '',
    email varchar(255) NOT NULL default '',
    created_at datetime NOT NULL,
    role_id int(11) NOT NULL default 0,
    PRIMARY KEY (id),
    FOREIGN KEY (role_id) REFERENCES user_roles (id)
);

CREATE TABLE IF NOT EXISTS posts (
    id int(11) NOT NULL auto_increment,
    title varchar(255) NOT NULL default '',
    content text NOT NULL,
    author_id int(11) NOT NULL default 0,
    created_at datetime NOT NULL,
    updated_at datetime NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (author_id) REFERENCES users (id)
)

 

komentarz 14 stycznia przez tkz Nałogowiec (42,020 p.)
Dlaczego nie użyjesz SERIAL?
Domyślne wartości powinny być na poziomie kodu, nie bazy. Jak zmienią Ci się wymagania biznesowe, to będzie trzeba przebudować bazę. Będzie rozjazd pomiędzy nową wersją aplikacji, a starą na poziomie bazy - dużo mniejsze pole do zmiany.
Not null i default mi nie leży. Skoro oczekujesz nie bycia nullem, to nie wstawiaj domyślnej wartości - znowu - na poziomie bazy.
IF NOT EXISTS jest bez sensu, jak zmienisz schemat, to i tak nie zostanie nic zgłoszone w samej bazie tylko apka Ci się wysypie w najgorszym przypadku. Wykonujesz SQLa, niech się wysypie.
Czysto stylistycznie. Jak odnosisz się do bazy, odnosisz się zazwyczaj do konkretnego pola. Często spotykana praktyka to pisanie w liczbie pojedynczej.

1 odpowiedź

0 głosów
odpowiedź 13 stycznia przez Wiciorny Ekspert (277,600 p.)
Jedynie co bym od siebie dodał, że defaultowo wszelkie ID nie warto ustawiać na 0, dlaczego? Bo to oznacza, że dla ID-> 0 będziesz miał relacje,
PO pierwsze wszelkie istotne ID Użytkownika, ROLI sa jak widzisz AUTO_INCREMENT, więc notacja zwykle jest od 1,
Natomiast jako klucze obce  defultowo posyłasz wartości 0, co nie jest dobrą praktyką, zrezygnowałbym z wartości default na rzecz ID-ków, które stanowią klucz obcy relacji.
komentarz 13 stycznia przez whiteman808 Bywalec (2,170 p.)
Czy typy danych takie jak int, varchar, datetime dawać zapisane wielkimi czy małymi literami?
komentarz 13 stycznia przez whiteman808 Bywalec (2,170 p.)
sqlfluff podpowiada mi by zapisywać inty, varchar itp. małymi literami, datetime. Zastanawia mnie szczególnie datetime
1
komentarz 13 stycznia przez Wiciorny Ekspert (277,600 p.)

konwencje tego typu są różne, należy jednak przyjąć te same normy na projekt.
Jeśli stosujesz małe litery, to tak stosuj, jeśli duże, to wszedzie analogicznie duże.

Nie ma rzeczy lepszej/gorszej, coś może być bardziej czy mniej czytelne, ale często jest to związane już z przyjętą praktyką, ważne, żeby raz przyjęta praktyka była utrzymana

Uwazam, żę  mniejszy format typu danych jest znacznie czytelniejszy niż pisane w formacie dużych liter.
za wyjątkiem pewnych z góry ustalonych słów kluczowych danego języka tak jak tutaj:  FOREIGN KEY, KEY, REFERENCES etc. 

Podobne pytania

+1 głos
1 odpowiedź 245 wizyt
pytanie zadane 9 marca 2020 w Nasze poradniki przez oracledev Użytkownik (620 p.)
+3 głosów
0 odpowiedzi 346 wizyt
pytanie zadane 9 września 2022 w C# przez Artur Koniec Gaduła (3,680 p.)
0 głosów
0 odpowiedzi 183 wizyt
pytanie zadane 13 sierpnia 2022 w C i C++ przez Cixo Gaduła (4,070 p.)

93,023 zapytań

141,986 odpowiedzi

321,290 komentarzy

62,370 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...