JajkoJajkoJajkoJajko
JajkoJajkoJajkoJajko
#programowanie #postgresql #bazydanych #sql

Mirki drogie, czy jest możliwe, żeby tabela miała dwa lub więcej kluczy głównych, z czego każdy z nich może się powtarzać ale ich kombinacja już musi być niepowtarzalna? A jeżeli w posgresql się nie da, to czy da się w innej technologii?

może jeszcze #naukaprogramowania
3
  • Najlepsze
  • Wszystkie komentarze
kawazaki
@JajkoJajkoJajkoJajko: pewnie szukasz czegoś takiego jak "złożony klucz główny", który zakładasz na dwóch lub więcej kolumnach
8
Kaczus2B
Kaczus2B
@JajkoJajkoJajkoJajko: jak jest klucz główny, to musi być unikatowy, wiec kluczem głównym powinna być kombinacja tych kluczy, natomiast 2 pozostałe zrób jako indeksy (jeśli chcesz po nich szybko wyszukiwać)
3
Kaczus2B
Kaczus2B
@JajkoJajkoJajkoJajko: moje rozwiązanie to takie, jak podał @kawazaki + 2 indeksy na pozostałych polach, bo chciałeś je jakoś tak wyróżniać, ale to niepotrzebne, jeśli nie potrzebujesz.
1
Kaczus2B
Kaczus2B
@JajkoJajkoJajkoJajko: No o takim czymś pisałem, może źle się wyraziłem, mój błąd 'kombinacja tych kluczy' to 'złożony klucz główny'
1
JajkoJajkoJajkoJajko
JajkoJajkoJajkoJajko
@kawazaki: Szybko pogooglowałem i wydaje mi się, że właśnie o coś takiego mi chodzi. Czyli wystarczy przy tworzeniu tabeli oznaczyć dane kolumny jako klucze główne i już?

@Kaczus2B: Jeżeli rozwiązanie @kawazaki jest możliwe, to czy Twoje rozwiązanie nie jest tylko dodaniem niepotrzebnej kolumny? wtedy niepowtarzalne kombinacje wartości tych kilku kolumn dla każdego rekordu gwarantują unikatowość klucza, więc warunek jest zachowany
0
JajkoJajkoJajkoJajko
JajkoJajkoJajkoJajko
@Kaczus2B: Z tego co rozumiem (ale może źle rozumiem :P) to nie trzeba dodawać dodatkowej kolumny, tylko wystarczy założyć na kilku kolumnach klucz główny. chciałbym uniknąć takiego kompozytowego indeksu w jednej kolumnie, bo wydaje mi się że w niektórych tabelach, które będę chciał stworzyć unikatowość rekordu definiowane byłoby przez 4-5 kolumn, przez co taki klucz złożony do jednej kolumny mógłby być dość długi
0
JajkoJajkoJajkoJajko
JajkoJajkoJajkoJajko
@Kaczus2B: To super, już wszystko wiem. Dzięki :)
0