MySQL baza danych i relacje - GRAFICZNY MODEL BAZY

0

Witam
Czy mógłby mi ktoś wytłumaczyć następujące rzeczy?

DROP TABLE IF EXISTS ms_college_department;
CREATE TABLE IF NOT EXISTS ms_college_department (
id int(10) unsigned NOT NULL auto_increment,
id_collage int(10) unsigned NOT NULL,
department varchar(150) collate utf8_polish_ci NOT NULL,
PRIMARY KEY (id),
KEY id_collage (id_collage),
CONSTRAINT 0_1 FOREIGN KEY (id_collage) REFERENCES ms_college (id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;

Co oznacza CONSTRAINT a po nim nazwa 0_1 albo coś inego I DO CZEGO TO SIĘ ODWOŁUJE?

Druga sprawa to jak mam baze MySQL ze składowaniem danych InnoDB gdzie powiązania mam za pomocą kluczy glównych i kluczy obcych a chciałbym przedstawić graficzną strukturę bazy rozrysowując relacje to jak mógłbym to zrobić? Wiem, że kiedy wszystkie tabele bedę miał powiazane poprzez klucze FORIGN KEY i REFERENCE to po wczytaniu bazy np. do MySQL Workbench to tam uzyskam od razu powiazania, ale mam 9 tabel a tylko dwie mam zrobione tak, ze program automatycznie okresla relacje, więc pozostałe też powinienem tak powiazać czy mozna inaczej?
W zasadzie zastosowałem relację tylko do tabeli uzytkownicy i profile bo usuwając użytkownika chcę usunąć wszystkie jego wpsisy z tabeli profile aby nie powstawał smietnik, także resztę tabel nie wiem jak powiązać bo jak już wspomniałem maM to WSZYSTKO ZROBIONE za pomocą kluczy glownych i kluczy obcych, ale jakoś strukturę muszę przedstawić tylko jak? Podpowie mi ktoś jak?

0

CONSTRAINT służy do nazywania pewnych elementów bazy, elementy te to np klucze obce (jak tu), zabezpieczenia (check) wszelkiej maści itp.
Każdy z tych elementów podczas tworzenia ma przypisywaną nazwę, nawet jak jej nie podasz będzie wygenerowana losowo. Dzięki tej nazwie możesz modyfikować dany element. Jak znasz nazwę, bo sam ją nadałeś to nie będziesz musiał szukać w słowniku bazy jak to się nazywa.
Teraz do czego może to być przydatne.
Powiedzmy, że chcesz skopiować bazę, całą jak leci. Normalnie musiałbyś brać pod uwagę wszystkie zależności pomiędzy tabelami i zacząć kopiować od tych nie wymagających żadnych innych wpisów. Ale możesz też powyłączać wszelkie klucze obce (wtedy nie będzie istotne w jakiej kolejności kopiujesz tabele) oraz wszelkie zabezpieczenia (jak nie będzie baza tego sprawdzać, to znacznie szybciej jej pójdzie), w końcu skoro baza już działa, to jest spójna, czyż nie, więc nie ma powodu kolejny raz tego sprawdzać.

Jeśli interesuje Cię wyciąganie danych na temat powiązań pomiędzy tabelami to będziesz musiał poszukać informacji na temat słownika bazy/data dictionary. Nigdy nie potrzebowałem, więc nie bardzo się orientuję jak to jest tam poukładane.

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