/ / Projektowe relacje tabel a sprzężenia - mysql, join

Projektuj relacje tabel z połączeniami - mysql, join

Mam tylko małe pytanie dla początkujących o MySQL zawierające relacje i sprzężenia.

Jaka jest różnica między nimi? W moim phpmyadminie w sekcji projektanta mogę tworzyć relacje między tabelami. Aby tabele były ze sobą połączone, na przykład "id"

Ale jeśli w moim kodzie php wykonam join / left join ...

na przykład:

$stmt = $db->prepare ("SELECT * FROM visitor
LEFT JOIN host ON visitor.host_id=host.id
LEFT JOIN reason ON visitor.reason_id=reason.id
WHERE visitor.id = ?");
$stmt->bindParam(1, $lastid);
$stmt->execute();

Czy to nie to samo, co ja zrobiłem? Pytam teraz, dlaczego musisz ustawić relacje w phpmyadmin? Jaka jest korzyść z tego?

Odpowiedzi:

0 dla odpowiedzi № 1

Podejrzewam, że to, o czym mówisz, jest obceklawiatura. Technicznie używasz kluczy obcych w swoim łączeniu (pole reason_id), ale formalnie je definiując tworzy ograniczenie integralności. Zaletą tego jest niemożność przypadkowego wstawienia gościa, który ma niepoprawny identyfikator przyczyny, można również określić zachowanie usuwania, aby upewnić się, że wszystkie powiązane z nim rekordy zostały odpowiednio oczyszczone.Zauważ, że nie wszystkie silniki magazynujące obsługują klucze obce.

Spójrz tutaj: https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html