Thread View: pl.comp.lang.delphi.bazy-danych
3 messages
3 total messages
Started by Borneq
Sun, 16 Aug 2015 07:49
Firebird, klucz główny i obcy
Author: Borneq
Date: Sun, 16 Aug 2015 07:49
Date: Sun, 16 Aug 2015 07:49
7 lines
1313 bytes
1313 bytes
Zaczynam pracę z bazami danych Firebirda. Jak na razie mam problem, bo pole typu VARCHAR nie może być kluczem głównym, np. ISBN książki. Mam pytania: jak zrobić klucz główny składający się z kilku kolumn w IBExpercie? To znaczy jedna i druga kolumna może się powtarzać, ale ich konkatenacja nie, jest unikalna i może być kluczem głównym. A co z foreign key? Gdy mamy relację one-to-many to po której stronie (one czy many?) tworzymy foreign key?
Re: Firebird, klucz główny i obcy
Author: arivald
Date: Sun, 16 Aug 2015 09:30
Date: Sun, 16 Aug 2015 09:30
26 lines
1769 bytes
1769 bytes
On 2015-08-16 09:49, Borneq wrote: > Zaczynam pracę z bazami danych Firebirda. Jak na razie mam problem, bo > pole typu VARCHAR nie może być kluczem głównym, np. ISBN książki. > Mam pytania: jak zrobić klucz główny składający się z kilku kolumn w > IBExpercie? To znaczy jedna i druga kolumna może się powtarzać, ale ich > konkatenacja nie, jest unikalna i może być kluczem głównym. > A co z foreign key? Gdy mamy relację one-to-many to po której stronie > (one czy many?) tworzymy foreign key? Jako constraint, albo bezpośrednio w definicji tabeli, albo dodany później (alter table). create table people ( id int not null, nickname varchar(12) not null, country char(4), .. .. constraint pkey primary key (id, nickname), ) W zasadzie we wszystkich SQLach jest tak samo, podajesz więcej niż jedną kolumnę, czy to PKey, czy FKey -- Arivald
Re: Firebird, klucz główny i obcy
Author: wloochacz
Date: Mon, 17 Aug 2015 17:23
Date: Mon, 17 Aug 2015 17:23
35 lines
2597 bytes
2597 bytes
W dniu 2015-08-16 o 09:49, Borneq pisze: > Zaczynam pracę z bazami danych Firebirda. Jak na razie mam problem, bo > pole typu VARCHAR nie może być kluczem głównym, np. ISBN książki. Co?! Od kiedy to varchar nie może być PK tabeli? Albo potem wchodzisz w zakładkę, na edytorze danej tabeli, "Constraints" i dalej "1.Primary Key" > Mam pytania: jak zrobić klucz główny składający się z kilku kolumn w > IBExpercie? Klikasz w kolumnę z nazwą PK obok kolumny, która ma wchodzić w skład PK. > To znaczy jedna i druga kolumna może się powtarzać, ale ich > konkatenacja nie, jest unikalna i może być kluczem głównym. To jest praktycznie zawsze bardzo zły pomysł. To, czyli PK złożony z wielu pól. Każdy FK musi mieć powtórzone wartości w pozostałych tabelach. Zawsze trzeba te wartości uzupełniać. Żeby jednoznacznie zidentyfikować wiersz w takiej tabeli, trzeba podać wszystkie wartości. Jest zdecydowanie więcej argumentów przeciw, niż za. Zdecydowanie lepiej założyć tzw. klucz sztuczny. A jeśli naprawdę zależy Ci na unikalności konkretnych złożeń wielu kolumn, to załóż sobie klucz unikalny - ale nie główny. > A co z foreign key? Gdy mamy relację one-to-many to po której stronie > (one czy many?) tworzymy foreign key? Many. PS. Panie, to są absolutne podstawy. Szkoda takich pytań na grupę... -- wloochacz
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads