![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 247 Pomógł: 9 Dołączył: 20.09.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Mam pewną rozkmnię odnośnie kluczy glównych w tabeli wiele do wielu. Pszypuszczając, mamy tabelę "User" "USER": -Id, PK AUTO_INCREMENT -Name -Surname Następnie mamy tabelę "Car" -Id, PK AUTO_INCREMENT -Name I teraz sedno problemu, tabela "User_car" -Id, PK AUTO_INCREMENT -IdUser -IdCar IdUser oraz IdCar mają ustawiony indeks unikalny. Teraz pytanie czy to id w tabelu user_car jest przydatne. Od razu jeszcze wspomnę, że główne założenie to jeden użytkownik może jeździć wieloma samochodami ale tylko jednym jednej marki. Wydaje mi się, że to może być przydatne jak usuwamy bądź modyfikujemy rekordy bo wystarczy znać Id. Ale wcześniej ustawiałem klucze główne na IdUser oraz IdCar i nie musiałem dawać indeksu unikatowego ale gdy modyfikowałem rekord musiałem znać IdUser oraz IdCar. Na wykładach z modelowania danych gość mówił, że zawsze powinno się tworzyć klucz sztuczny w każdej tabeli i nie powinno się wybierać klucza naturalnego. Argumentu nie pamiętam jaki dawał. Myślę że to chyba nie ma wielkiej róźnicy w wydajności ale pozowlę was spytać się o opinię. Pozdrawiam. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 340 Pomógł: 49 Dołączył: 3.07.2009 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Witam. Mam pewną rozkmnię odnośnie kluczy glównych w tabeli wiele do wielu. Pszypuszczając, mamy tabelę "User" "USER": -Id, PK AUTO_INCREMENT -Name -Surname Następnie mamy tabelę "Car" -Id, PK AUTO_INCREMENT -Name I teraz sedno problemu, tabela "User_car" -Id, PK AUTO_INCREMENT -IdUser -IdCar IdUser oraz IdCar mają ustawiony indeks unikalny. Teraz pytanie czy to id w tabelu user_car jest przydatne. Od razu jeszcze wspomnę, że główne założenie to jeden użytkownik może jeździć wieloma samochodami ale tylko jednym jednej marki. Wydaje mi się, że to może być przydatne jak usuwamy bądź modyfikujemy rekordy bo wystarczy znać Id. Ale wcześniej ustawiałem klucze główne na IdUser oraz IdCar i nie musiałem dawać indeksu unikatowego ale gdy modyfikowałem rekord musiałem znać IdUser oraz IdCar. Na wykładach z modelowania danych gość mówił, że zawsze powinno się tworzyć klucz sztuczny w każdej tabeli i nie powinno się wybierać klucza naturalnego. Argumentu nie pamiętam jaki dawał. Myślę że to chyba nie ma wielkiej róźnicy w wydajności ale pozowlę was spytać się o opinię. Pozdrawiam. To jest zagadka akademicka czy użytkowa baza danych?? Jeżeli użytkownik może jeździć wieloma samochodami, ale tylko jednym danej marki, to powinieneś mieć w bazie czytelny podział: marka->model->samochód Więc trzy tabele dla samego samochodu Tabela user_car akademicko może mieć klucz naturalny na dwóch polach, ale w praktyce zaraz się okaże, że taki klucz jest niepraktyczny gdy będziesz chciał tą tabelę połączyć z następną (tankowania, naprawy, faktury) Nie trudno też wymyślić sytuację, gdy użytkownik jeździł daną marką dwa lata temu i obecnie chce jeździć dalej. Jak założysz klucz naturalny zablokujesz się |
|
|
![]() ![]() |
![]() |
Aktualny czas: 6.10.2025 - 21:06 |