Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 71 Pomógł: 4 Dołączył: 3.06.2008 Ostrzeżenie: (0%)
|
Problem jest taki:
Mam tabelę z kilkoma polami. Większość z tych pól będzie przechowywać informacje tylko ze zbioru dwuelementowego. Niech to będzie: {"T", "N"} ale rownie dobrze moga to być wartości {0, 1} (nie dopuszczam wartości NULL!). Jakie to będa wartości to już małoistotne, gdyż nie będa one uczestniczyły w klauzulach SELECT. To będa informacje tylko dla administratora. I takich pól jest kilka/kilkanaście (co chwile jakieś nowe powstają w projekcie). I teraz właśnie zasadnicze pytanie: Czy przy tworzeniu tabeli użyć dla kazdej takiej flagi pola typu ENUM i wowczas niech kazde pole zajmuje po 1 bajt. Czy też może użyć typu jednego pola typu SMALLINT i kazda flaga byłaby reprezentowana przez jeden bit na odpowiednim miejscu w tym typie liczbowym, ktory zajmuje 3 bajty (ewentualnie dam większy jezeli flag jeszcze przybędzie). Jak juz napisałem wcześniej te pola binarne mają po prostu tylko być w tabeli. Nie posłużą one do zapytan warunkowych. Skrypt PHP jak odbierze rekord przetworzy te pola (albo wyłuska odpowiednie bity z liczby) i wyświetli odpowienie rzeczy na ekranie. Tak to ma działać. Jak więc radzicie. Czy zaoszczędzić na pojemności tabeli i użyć typu liczbowego czy jednak każda flaga to osobne pole w tabelce? Jakie jest Wasze zdanie? Jaka jest Wasza praktyka? Ja osobiście skłaniam się aby był to typ liczbowy. Ten post edytował achaja 6.03.2009, 14:19:44 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 149 Pomógł: 12 Dołączył: 3.03.2008 Skąd: łódzkie Ostrzeżenie: (0%)
|
A może wykorzystaj jedno pole na przechowywanie wartości tych właściwości pod postacią liczby systemu dziesiętnego. Następnie stwórz drugą tabele w której każdy rekord to będzie nazwa nowej właściwości oraz jej miejsce w szeregu wszystkich tych właściwości. Z tego co piszesz tych właściwości jest coraz więcej więc co trochę zmienia Ci się struktura tabeli.
I teraz powiedzmy masz trzy właściwości: pachnie; słodkie; kocha; Chcąc zapisać np. pachnie = 1, słodkie = 0, kocha = 1 użyjesz wartości dziesiętnej 5, bo 5 dziesiętne po prze konwertowaniu na binarne da Ci 101. Mam nadzieję, że zrozumiesz co mam na myśli (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
|
achaja Wybór optymalnego typu danych 6.03.2009, 13:52:14
sowiq Jest jeszcze takie pole jak BIT. Wtedy wiadomo - 1... 6.03.2009, 14:03:57
vsemak można też skorzystać z TINYINT(1) to jest to samo ... 6.03.2009, 14:20:21
achaja Tylko ze wolalbym aby to nie byl typ BIT, ktory wy... 6.03.2009, 14:28:31
sowiq http://troels.arvin.dk/db/rdbms/ -> The BOOLEAN... 6.03.2009, 14:33:15 
phpion Cytat(sowiq @ 6.03.2009, 16:33:15 ) h... 6.03.2009, 15:44:56
sowiq Na stronie, którą podałem napisali podob... 6.03.2009, 15:47:35
achaja jareb_bolo to jest dobre rozwiązanie. O takim... 7.03.2009, 11:57:13 ![]() ![]() |
|
Aktualny czas: 2.01.2026 - 12:37 |