![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 148 Pomógł: 14 Dołączył: 23.02.2013 Ostrzeżenie: (0%) ![]() ![]() |
Mam dwie tabele: users i companies, połączone relacją jeden do wielu. Użytkownik może mieć wiele firm, w tym jedną oznaczoną jako własną. W tabeli companies mam pole user_id, które jest kluczem obcym z tabeli users i pole own_company. Pole own_company przyjmuje wartości 0/1. Czy da się jakoś tak zrobić na poziomie bazy danych, aby przy wstawianiu i aktualizowaniu danych sprawdzać, czy dany użytkownik ma już własną firmę, czyli czy występuje już kombinacja id użytkownika user_id i wartości 1 w polu own_companies. Myślałem o indeksie na te dwa pola, który byłby "unique", ale to spowoduje że będę mógł mieć też tylko jedną firmę obcą.
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 527 Pomógł: 438 Dołączył: 28.06.2011 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Nie kombinuj - rozwiązanie jest prostsze niż myślisz:
Tabelę companies zrób tak by own_company przyjmowało 1 lub NULL (czyli INT 1/0 + NULL) i ustaw na polach user_id,own_company indeks UNIQUE. Kiedy dodajesz firmę nie należącą do gościa ustawiaj own_company na NULL, a jeśli gościa na 1 i tyle. NULL nie jest brany pod indeks więc może wystąpić sytuacja: id | user_id | own_company | inne pola ... 1 2 NULL 2 2 NULL 3 2 1 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 07:25 |