Podczas opracowywania projektu oprogramowania jednym z najważniejszych, fundamentalnych i wewnętrznych aspektów jest odpowiednio ustrukturyzowany schemat bazy danych. Jest to odpowiednik tego, kiedy budując dom, musisz upewnić się, że fundamenty są prawidłowo położone, w przeciwnym razie szanse na zbudowanie domu wysokiej jakości zostaną drastycznie zmniejszone.
Zaskakująco prostsze niż mogłoby się wydawać, nauczmy się różnych aspektów używanych do napisania dobrze zaprojektowanego schematu bazy danych.
Składnia CREATE TABLE
Aby rozpocząć, otwórz swój ulubiony Edytor tekstu. Tworzenie schematu bazy danych nie wymaga niczego więcej niż zwykłego pliku tekstowego. Baza danych składa się z wielu tabel, z których każda zawiera kolumny, a składnia CREATE TABLE służy do tworzenia pojedynczej tabeli. Oto podstawowy przykład:
UTWÓRZ TABELĘ użytkowników (
id INT NOT NULL,
is_active TINY INT NOT NULL,
full_name VAR CHAR (100) NOT NULL,
email VARCHAR (100) NOT NULL
);
Jak widać, spowoduje to utworzenie tabeli bazy danych o nazwie
użytkowników który składa się z czterech kolumn. Powinna to być dość prosta instrukcja SQL zaczynająca się od UTWÓRZ TABELĘ, po którym następuje nazwa tabel bazy danych, a następnie w nawiasach kolumny tabeli oddzielone przecinkiem.Użyj poprawnych typów kolumn
Jak pokazano powyżej, kolumny, z których będzie się składać tabela, są oddzielone przecinkami. Każda definicja kolumny składa się z trzech takich samych części:
TYP COL_NAME [OPCJE]
Nazwa kolumny, po której następuje typ kolumny, a następnie ewentualne parametry opcjonalne. Parametry opcjonalne zajmiemy się później, ale koncentrując się na typie kolumny, poniżej wymieniono najczęściej używane dostępne typy kolumn:
Pod każdym względem powyższe typy kolumn są wszystkim, czego potrzebujesz, aby napisać dobrze skonstruowane schematy bazy danych MySQL.
Zdefiniuj opcje kolumn
Podczas definiowania kolumn można również określić różne opcje. Poniżej znajduje się kolejny przykład UTWÓRZ TABELĘ komunikat:
UTWÓRZ TABELĘ użytkowników (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
nazwa użytkownika VARCHAR (100) NOT NULL UNIQUE,
status ENUM ('aktywny', 'nieaktywny') NOT NULL DEFAULT 'aktywny',
saldo DECIMAL (8,2) NOT NULL DEFAULT 0,
date_of_birth DATETIME,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);
Powyższe może wyglądać trochę zniechęcająco, ale nie martw się, to całkiem proste. W podziale, oto, co dzieje się w powyższym stwierdzeniu:
- Należy zawsze używać opcji NOT NULL we wszystkich możliwych kolumnach, aby zwiększyć szybkość i wydajność tabeli. To po prostu określa, że kolumna nie może pozostać pusta / pusta, gdy wstawiany jest wiersz.
- Zawsze staraj się, aby rozmiar kolumny był możliwie jak najmniejszy, ponieważ pomaga to poprawić szybkość i wydajność.
- Plik ID kolumna jest liczbą całkowitą, jest również kluczem podstawowym tabeli, co oznacza, że jest unikalna i będzie zwiększana o jeden za każdym razem, gdy zostanie wstawiony rekord. Zasadniczo powinno to być używane we wszystkich tworzonych tabelach, aby można było łatwo odwołać się do dowolnego pojedynczego wiersza w tabeli.
- Plik status kolumna to LICZBA i musi mieć wartość „aktywny” lub „nieaktywny”. Jeśli nie określono żadnej wartości, nowy wiersz rozpocznie się ze stanem „aktywny”.
- Plik saldo kolumna zaczyna się od 0 dla każdego nowego wiersza i jest kwotą sformatowaną do dwóch miejsc po przecinku.
- Plik Data urodzenia kolumna jest po prostu DATĄ, ale dopuszcza również wartość zerową, ponieważ data urodzenia może nie być znana podczas tworzenia.
- Ostatni, plik created_at kolumna to TIMESTAMP i domyślnie jest to bieżąca godzina wstawienia wiersza.
Powyższe jest przykładem ładnie ustrukturyzowanej tabeli bazy danych i powinno być używane jako przykład w przyszłości.
Jedną z największych zalet korzystania z relacyjnych baz danych, takich jak mySQL to doskonałe wsparcie dla ograniczeń klucza obcego i kaskadowania. Dzieje się tak, gdy łączysz ze sobą dwie tabele za pomocą kolumny, tworząc relację nadrzędny-podrzędny, więc po usunięciu wiersza nadrzędnego niezbędne wiersze podrzędne są również automatycznie usuwane.
Oto przykład:
UTWÓRZ TABELĘ użytkowników (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
nazwa użytkownika VARCHAR (100) NOT NULL UNIQUE,
full_name VARCHAR (100) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
) silnik = InnoDB;
CREATE TABLE zamówienia (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
identyfikator użytkownika INT NOT NULL,
kwota DECIMAL (8,2) NOT NULL,
nazwa_produktu VARCHAR (200) NIE NULL,
KLUCZ ZAGRANICZNY (identyfikator użytkownika) ODNIESIENIA użytkownicy (id) NA USUŃ KASKADĘ
) silnik = InnoDB;
Zauważysz klauzulę FOREIGN KEY jako ostatnią linię. Ta linia po prostu stwierdza, że ta tabela zawiera wiersze potomne, które są połączone przez identyfikator użytkownika kolumnę do ich wiersza nadrzędnego, którym jest ID kolumna użytkowników stół. Oznacza to, że za każdym razem, gdy wiersz jest usuwany z użytkowników table, mySQL automatycznie usunie wszystkie odpowiednie wiersze z pliku Zamówienia tabela pomagająca zapewnić integralność strukturalną w bazie danych.
Zwróć także uwagę na engine = InnoDB na końcu powyższego oświadczenia. Chociaż InnoDB jest teraz domyślnym typem tabeli MySQL, nie zawsze był, więc należy to dodać, aby zachować bezpieczeństwo, ponieważ kaskadowanie działa tylko z tabelami InnoDB.
Projektuj z pewnością
Jesteś teraz na dobrej drodze do zaprojektowania solidnych, dobrze zorganizowanych schematów bazy danych mySQL. Korzystając z powyższej wiedzy, możesz teraz pisać dobrze zorganizowane schematy, które zapewniają zarówno wydajność, jak i integralność strukturalną.
Mając swój schemat, upewnij się, że wiesz, jak go z nimi używać podstawowe polecenia SQL.
Dowiedz się, jak używać sprzężeń SQL, aby usprawnić zapytania, zaoszczędzić czas i sprawić, że poczujesz się jak zaawansowany użytkownik SQL.
- Nieokreślony
Zapisz się do naszego newslettera
Dołącz do naszego biuletynu, aby otrzymywać wskazówki techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Jeszcze jeden krok…!
Potwierdź swój adres e-mail w wiadomości, którą właśnie wysłaliśmy.