Jaka to jest relecja?

Odpowiedz Nowy wątek
2014-12-29 23:32
0

Mam taki kod SQL dla MySQL:

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?

Pozostało 580 znaków

2014-12-29 23:49
0

tak


Chcesz pomocy - pokaż kod - abrakadabra źle działa z techniką.

Pozostało 580 znaków

2014-12-30 03:20
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ą.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2014-12-30 08:58
1

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

Pozostało 580 znaków

2014-12-30 10:03
gościu
0

Dlaczego?

Pozostało 580 znaków

2014-12-30 10:48
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.


"There are people who actually like programming. I don't understand why they like programming."
Rasmus Lerdorf

Pozostało 580 znaków

2014-12-30 21:17
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".

Pozostało 580 znaków

2015-01-04 18:57
0

Czyli jak zmienię kod na:

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?

Pozostało 580 znaków

2015-01-04 22:09
0

Tak

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0