Temat: Kolumna, która jest potęgą dwójki
Witam,
Coraz częściej zdarza mi się używać operacji na bitach przy ustalaniu, że jeden rekord jest powiązany z kilkoma (1-n).
Np. mamy tabele :
typ_kontaktu - np. dostawca, odbiorca, pośrednik
kontakty - wiadomo
No i teraz 1 kontakt może być jednocześnie np. dostawcą, odbiorcą, no i tutaj można stworzyć kolejną tabelę, która zawierałaby id_typu_kontaktu oraz id_kontakty. Jednak wydaje mi się to zupełnie nie potrzebne w tym przypadku ponieważ typy kontaktu nie będą edytowalne, a także ich liczba jest bardzo mała. Dlatego tutaj postanowiłem zastosować bity. Czyli
typ_kontakt ( id, nazwa, bit )
- 1, dostawca, 1
- 2, odbiorca, 2
- 3, pośrednik, 4
w tabeli kontakty ( id, nazwa, bity )
- 1, firma x, 3 [ czyli jest jednocześnie dostawcą i odbiorcą )
- 2, firma y, 5 [ czyli jest jednocześnie dostawcą i pośrednikiem )
Moje pytanie jest następujące czy w takim przypadku nie byłoby warto ustawić, że bit jest kluczem głównym? Zamiast dodawać dodatkową kolumnę z id, która nigdzie w sumie nie jest używana?
Drugie pytanie czy ktoś wie w jaki sposób zbudować CHECK, aby sprawdzał czy wprowadzona wartość jest potęgą dwójki? Szukałem trochę w polskim google i niestety nie znalazłem.