Jaka to jest relecja?

PI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 227
0

Mam taki kod SQL dla MySQL:

Kopiuj
create table jeden
(
tab_id int not null auto_increment,
primary key(tab_id),
cecha varchar(20)
);

create table dwa
(
id int not null auto_increment,
primary key(id),
foreign key(id) references jeden (tab_id),
cecha varchar(10)
);
 

Czy on tworzy relacje jeden do wielu między tabelami jeden i dwa?

abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
0

tak

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
1

Ten kod tworzy dwie relacje i ograniczenie integralnościowe w postaci klucza obcego między jedną a drugą.
To ograniczenie może być interpretowane jako swego rodzaju wirtualne powiązanie między tabelami, ale samo w sobie nie jest relacją.

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
1

Wg mnie nie jeden do wielu a raczej "0 do 1".

  • Rejestracja: dni
  • Ostatnio: dni
0

Dlaczego?

Vardamir
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Ponieważ w tym momencie sprawa wstawiania do tabeli dwa wygląda trochę chaotycznie. Możesz do niej wstawić element tylko wówczas, gdy w tabeli jeden wstawiłeś już odpowiednią ilość elementów. Klucz obcy w tabeli dwa to równocześnie klucz główny automatycznie inkrementowany.

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
0

Nawet jesli w tabeli dwa nie miałby auto_increment, ale pozostał by primary key, to i tak pozwoli on tylko na wstawienie dokładnie jednego (co najwyżej) id z tabeli jeden. Dlatego "0 do 1".

PI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 227
0

Czyli jak zmienię kod na:

Kopiuj
CREATE TABLE jeden
(
tab_id INT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(tab_id),
cecha VARCHAR(20)
);
 
CREATE TABLE dwa
(
id INT NOT NULL AUTO_INCREMENT,
id2 INT NOT NULL,
PRIMARY KEY(id),
FOREIGN KEY(id2) REFERENCES jeden (tab_id),
cecha VARCHAR(10)
);
 

to będzie relacja jeden do wielu?

Marcin.Miga
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2794
0

Tak

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.