Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] Jaki typ pola dla rabatu
SmokAnalog
post
Post #1





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cześć,

chcę stworzyć w bazie danych tabelę z rabatami (w procentach) dla poszczególnych użytkowników. Zastanawiam się jakiego typu pola najlepiej użyć. Pomysły:
  1. float
    Zapisywać rabat w skali [0, 1]
  2. decimal
    Tu też w skali [0, 1]
  3. tinyint
    A tutaj w skali [0, 100]

Dwa pierwsze pomysły są bardzo podobne, ale zastanawia mnie czy użycie float jest w pełni bezpieczne dla dokładności obliczeń, bo jak wiemy z tymi zmiennoprzecinkowymi wartościami różnie bywa. Czy to ma jednak jakiekolwiek znaczenie dla wyniku o tak małej dokładności, jaką jest kwota pieniężna (zaledwie 2 znaki po przecinku)? Drugi pomysł, czyli decimal, to bardziej pewny format - zawsze go używam do zapisywania kwot pieniężnych. Trzeci pomysł to już inna bajka, ale kusi mnie "pewność" takich danych. Liczba całkowita to jednak liczba całkowita, a i dane czytelniejsze i zajmują mniej (1 bajt). Wadą jest to, że trzeba dołożyć operację dzielenia w każdym zapytaniu, co jest trochę upierdliwe. W praktyce pewnie i tak to napiszę obiektowo, więc to nie będzie wielki problem, no ale podebatować można (IMG:style_emoticons/default/smile.gif)

Jak Wy to widzicie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


@nospor
Z decimalem chyba głupoty nie wyskakują, bo on jest zupełnie inaczej przetwarzany niż floaty.

@kayman
Czytelność danych w bazie mnie nie interesuje, nie będę czytał sobie bazy przed snem (IMG:style_emoticons/default/tongue.gif) Matematyka jest upierdliwa o tyle, że jak będę liczył w stu miejscach cenę, to będę musiał wszędzie dodawać ten dzielnik. Chociaż tak jak mówiłem, najprawdopodobniej zrobię metodę do obliczania cen, która będzie wykonywała dodatkowe mnożenie przez rabat jako dodatkowe zapytanie. Nie odważę się dodawać rabatu do każdego zapytania osobno (bo wydajność, ble ble), bo zbyt łatwo o tym zapomnieć.

@pyton
Dlaczego łatwiej operować tinyintem niż decimalem w tym przypadku?

Rozwijam dyskusję, chociaż wbrew pozorom nie mam ciśnienia na decimal. Na tym etapie mogę jedynie powiedzieć, że float przegrywa z kretesem (IMG:style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 12:34