SQLite primary key, indeksy

SQLite primary key, indeksy
AN
  • Rejestracja:ponad 11 lat
  • Ostatnio:prawie 10 lat
  • Postów:78
0

Witam! Mam mały problem ze zrozumieniem pewnej rzeczy, albo nie wiem czy dobrze to rozumiem. Otóz mamy taką sytuację, że tworzę tabelę np. Customers,
w której mam takie pola jak ID, Name, Surname, Address. I teraz chcę, aby kluczem głównym w mojej tabeli było ID. Zatem nie może pojawić się wiecej niż jeden wiersz z danym ID. Ale poza tym chcę żeby nie było więcej niż jeden wiersz z takim samym Name, Surname, Address. To w takim przypadku dodaje się jakiś indeks unikalny?
Bo wymyśliłem takie coś, żeby przy tworzeniu tablicy dać id na primary key, unique, autoincrement, a po zadeklarowaniu pol, podać coś takiegio Constraint Unique(name,surname, address). I niby działa, ale spotkałem coś takiego jak Indeks - no i wyczytałem, że służy do lepszego / szybszego pobierania danych itp...i tam można zaznaczyć kilka pół i wybrać Unique - ale nie rozumiem co się stanie w czymś takim. Z góry dziękuję za odpowiedź !

Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:ponad rok
  • Lokalizacja:Wrocław
  • Postów:13042
0

primary key, autoincrement na id oraz indeks unique na name, surname, address.

ale nie rozumiem co się stanie w czymś takim

Wyrzuci błąd, gdy będziesz chciał dodać wpis, który nie jest unikalny na id bądź name, surname, address.
Tabela będzie również nieco większa w sensie fizycznego rozmiaru pliku na dysku (indeksy są zapamiętywane osobno), lecz szybsza (właśnie dlatego, że indeksy są zapamiętywane osobno).


edytowany 2x, ostatnio: Patryk27
Marcin.Miga
  • Rejestracja:prawie 17 lat
  • Ostatnio:dzień
  • Postów:2792
0

Nie wiem, jak SQLite, ale inne bazy na CONSTRAINT UNIQUE domyślnie tworzą INDEX.

abrakadaber
abrakadaber
chyba każda baza tak robi, bo jak inaczej szybko sprawdzić unique?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.