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 № 1Podejrzewam, ż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