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

Typy danych w MySQL

Aruba Cloud - Virtual Private Server VPS
+3 głosów
511 wizyt
pytanie zadane 7 lutego 2023 w SQL, bazy danych przez zbiku25 Gaduła (3,000 p.)

Tworzę serwis dla użytkowników, który będzie pobierać informacje z bazy danych. Zastanawiam się nad typami danych, które chcę zastosować. Postanowiłem użyć poniższych - klucz to nazwa kolumny - typ zmiennej

  • id - int     (id użytkownika, primarykey, autoincreament)
  • email - VARCHAR (email użytkownika)
  • hasło - VARCHAR (haschowane hasło)
  • newsletter - Boolean (albo się zapisał - wtedy będzie "1" albo nie - wtedy nic)
  • kurs - Boolean (albo posiada dostęp do kursu - wtedy będzie "1" albo nie - wtedy nic)

Czy powyższe podejście jest OK? Jeżeli nie to prośba o sugestię poprawy.

Pozdrawiam,

komentarz 7 lutego 2023 przez Iei Bywalec (2,170 p.)
Chyba dobrze
komentarz 7 lutego 2023 przez zbiku25 Gaduła (3,000 p.)
:) dzięki, czułbym się lepiej bez  "chyba" ;)

1 odpowiedź

+2 głosów
odpowiedź 7 lutego 2023 przez VBService Ekspert (256,600 p.)
wybrane 8 lutego 2023 przez zbiku25
 
Najlepsza

AFAIK

  1. id - INT AUTO_INCREMENT PRIMARY KEY yes
    Pole id w bazie danych często jest używane jako klucz główny w tabeli (PRIMARY KEY) i powinno być typu INT. W takim przypadku warto ustawić jego atrybut AUTO_INCREMENT, aby automatycznie generować unikalne wartości dla tego pola przy dodawaniu nowych rekordów do tabeli.
  2. email - VARCHAR yes
    W bazie danych pole email powinno być typu VARCHAR, ponieważ adresy e-mail zwykle zawierają zarówno litery, jak i cyfry oraz znaki specjalne. Zalecana długość pola email to 255 znaków, aby pomieścić najdłuższy możliwy adres e-mail.
  3. hasło - VARCHAR yes
    W przypadku przechowywania haseł w bazie danych, zaleca się użycie
    hash-u zamiast przechowywania "czystych" tekstów haseł. W MySQL można użyć typu danych CHAR lub VARCHAR dla tego typu pola. Zalecana długość to co najmniej 60 znaków, aby pomieścić zapis hasła za pomocą algorytmów bezpiecznego hash-owania, takich jak np. bcrypt.
  4. newsletter - Boolean yes
    zero - false, nie zero - true
  5. kurs - Boolean yes
    zero - false, nie zero - true

w punktach 4 i 5 można rozważyć też użycie: ENUM

newsletter ENUM('subscribed', 'none')
kurs ENUM('access granted', 'none')

 

2
komentarz 7 lutego 2023 przez Wiciorny Ekspert (280,450 p.)
Przechowywanie hasła binarnie jest bezpieczniejsze, ale mniej powszechne i może być problematyczne, VARCHAR jest łatwiejszy do kontroli, też nie wymaga tyle wkładu w np. tworzenie soli skrótu czy samo konsumowanie danych z bazy.  Czasami jednak warto przemyśleć również tę opcję

Chociaż według dokumentacji dla poprawnych i najlepszych baz danych powinnien to być format binarny. albo jeśli jest to np MySQL to varbinary.
mowa oczywiśćie o "safety" czyli nie strikte problemu z wykradzeniem, bo to zależne jak wspomniałeś od algorytmu, ale od bezpieczeństwa ATOMOWOŚCI danych
komentarz 8 lutego 2023 przez zbiku25 Gaduła (3,000 p.)
Jak zawsze profeska! Dzięki!

Podobne pytania

+1 głos
1 odpowiedź 904 wizyt
pytanie zadane 4 stycznia 2020 w C# przez startCoding Obywatel (1,210 p.)
0 głosów
0 odpowiedzi 350 wizyt
pytanie zadane 31 października 2018 w SQL, bazy danych przez Grzegorz Mikina Dyskutant (8,060 p.)
0 głosów
1 odpowiedź 1,029 wizyt
pytanie zadane 10 sierpnia 2020 w C i C++ przez Sevence Początkujący (280 p.)

93,331 zapytań

142,323 odpowiedzi

322,400 komentarzy

62,667 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 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...