Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Przechowywanie typu logicznego
QmarXX
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 28.11.2011

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


Witam,
pisze własnego CMS-a i wzorując się na struktrurach baz danych innych dużych projektów mam dylemat w jaki sposób przechowywać wartości ustawień TAK/NIE. W phpBB3 przechowywane jest to jako TINYINT(1) UNSIGNED o wartościach 1/0, a np. w WordPress używane są opisy słowne trzymane w komórkach VARCHAR(20) o wartościach np.: "open"/"closed"/"publish". Inny system używa pól VARCHAR(3) lub ENUM i przechowuje wartości "YES"/"NO". Nie bardzo rozumiem sens używania pól varchar w takiej sytuacji, które powodują zwiększenie rozmiaru bazy danych, a i porówywanie takich wartości trwa dłużej. Macie jakieś argumenty na stosowanie opisów tekstowych czy to tylko takie widzimisie twórców poprawiające czytelność warunków w kodzie?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


1. Różnice w wielkości danych czy czasie porównania są pomijalnie małe w większości przypadków.
2. Powinieneś stosować typ BOOLEAN (będący notabene aliasem dla TINYINT(1)) chociażby w celu zwiększenia przejrzystości kodu.
3. Powinieneś korzystać z literałów TRUE oraz FALSE odnosząc się do wartości kolumny.
Go to the top of the page
+Quote Post
Pyton_000
post
Post #3





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


Możesz użyć czegokolwiek co ma 1 bit czyli TINYINT(1), BIT a nawet widziałem coś takiego: CHAR(0) DEFAULT NULL które to przechwouje 2 wartości '' oraz NULL
Go to the top of the page
+Quote Post
QmarXX
post
Post #4





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 28.11.2011

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


Dziękuję za odpowiedzi. Użyję TINYINT(1) do którego już się przywyczaiłem. Co do czytelności kodu i stosowania BOOLEAN to raczej nikt poza mną nie będzie z niego korzystał, więc pozostanę przy znanym mi i używanym tinyint.
Go to the top of the page
+Quote Post

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: 24.08.2025 - 01:35