Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 1 086 Pomógł: 8 Dołączył: 10.12.2003 Ostrzeżenie: (0%)
|
Potrzebuję stworzyć tabelę, która będzie kojarzyła ze sobą pozycje dwóch innych tabel:
1) Tabela "users" z id użytkownika i jego danymi 2) Tabela "hobby" z id hobby i nazwą hobby Chcę, aby każdy użytkownik mógł sobie obrać kilka zdefiniowanych przeze mnie hobby. Tworzę więc tabelę z dwoma polami: 1) user_id 2) hobby_id Teraz pytanie: Czy jest jakiś silny argument, aby dodawać pole id w tabeli łączącej? Zawsze mnie uczono, że id musi być i że ułatwia pracę, ale w tym przypadku szczerze mówiąc nie widzę zastosowania. Gdy user zmienia hobby po prostu kasuję jego dotychczasową listę hobby i tworzę jeszcze raz. Nie mam potrzeby odwoływania się do konkretnego wiersza tabeli łączącej. Co więcej boję się, że przy częstej zmianie hobby, wartości jej pól "id" drastycznie urosną mimo ogólnie małej ilości wierszy. Dlatego głównie nie chciałbym dodawać pola "id". Ten post edytował Zajec 6.04.2007, 23:10:03 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 793 Pomógł: 32 Dołączył: 23.11.2006 Skąd: Warszawa Ostrzeżenie: (0%)
|
Darti co nagle to po diable, co prawda tabela z samymi hobby jak i user są niepotrzebne, bo ważne są id obu.
A wybranie dwóch osób, o takim samych hobby wcale nie jest takie proste. Ja chwilowo widzę tylko taką możliwość, że dla danego użytkownika szukamy innych o tych samych zainteresowaniach. Ponieważ jak widz chcesz pełne pokrycie zbiorów zainteresowań. Wracając do tematu, id jest w tym przypadku zbędne, i ogólnie jak możemy określić unikalne pole lub ich kombinacji, tu UNIGUE(user_id,hobby_id), ale czasem jak jest albo nie możliwe wybranie unikalnych, lub dla prostoty użytkowania dodaje się id. Dla prostoty: załóżmy że mamy tabele osób i każda ma PESEL (bo tak wynika z wymagań że jest zawsze podany) i można w ten sposób unikalnie identyfikować daną osobę, ale po pierwsze łączenie po polu pesel jest niewygodne i wytwarza o wiele więcej danych (bo każda powiązana musiała by mieć cały pesel), do tego udostępnia pesel osoby a takie dane są objęte ochroną, po drugie możliwe jest że ktoś wprowadzi błędny, a potem będzie chciał poprawić, jak już będzie w wielu miejscach, chyba każdy wie co by to znaczyło. Tu mamy wewnętrzną identyfikację i prostą unikalność, do tego do tej tabeli nie podłączmy innych do unikalnego rekordu więc można (ale nie musimy) sobie darować pole id. |
|
|
|
Zajec Mój pomysł: brak ID w tabeli 6.04.2007, 23:07:48
envp Oczywiście że id nie musi być. Id jest potrzebne t... 6.04.2007, 23:15:50 
Zajec Dzięki za odpowiedź. Pominę w takim razie id.
(Ba... 7.04.2007, 09:47:06
NuLL Zalezy w jakiej bazie - sa takie gdzie mozna zdefi... 7.04.2007, 04:59:45
maryaan primary key.... 7.04.2007, 10:11:57
Void(Null) Nie wiem czy dobrze rozumuje, ale...
Jeśli chodzi... 9.05.2007, 23:34:58
dr_bonzo Zajac: nie musisz robic IDka.
CytatId jest potrz... 9.05.2007, 23:56:13
Darti A ciekawi mnie przypadek, kiedy chcesz wybrać dwóc... 16.05.2007, 12:28:40
dr_bonzo Tylko dwoch?
[SQL] pobierz, plaintext SELECT h.nam... 16.05.2007, 12:48:03
Darti @dr_bonzo coś Twoja metoda nie działa, zmontowałem... 16.05.2007, 13:18:57
Darti Tzn z mojego punktu widzenia ważna jest jedynie ta... 16.05.2007, 22:13:03
Sedziwoj Darti problem nie jest jak mi się wydaje banalny, ... 16.05.2007, 23:30:12
Darti @Sedziwoj jesteś geniuszem w tym temacie
działa ... 17.05.2007, 10:26:27
dr_bonzo 1. Darti: sorry za blad; zle zrozumialem twoja pro... 17.05.2007, 10:33:43
Sedziwoj Cytat(dr_bonzo @ 17.05.2007, 11:33:43... 17.05.2007, 22:24:37 ![]() ![]() |
|
Aktualny czas: 31.12.2025 - 12:15 |