Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Tworzenie tabeli

Termin Definicja
Tworzenie tabeli

Tworzenie tabeli poleceniem CREATE TABLE definiuje jej kolumny, typy danych i ograniczenia.

Tworzenie tabeli w bazie danych

Tworzenie tabeli to etap projektowania bazy danych, w którym określa się strukturę przechowywanych informacji. Tabela porządkuje dane w wierszach i kolumnach, dzięki czemu można je później wyszukiwać, sortować, łączyć oraz modyfikować za pomocą zapytań SQL. Każdy wiersz opisuje pojedynczy obiekt, zdarzenie albo relację, natomiast każda kolumna przechowuje określoną cechę tego obiektu. W tabeli pracowników wiersz może przedstawiać jedną osobę, a kolumny mogą zawierać jej identyfikator, imię, stanowisko i datę rozpoczęcia pracy.

Do utworzenia tabeli stosuje się polecenie CREATE TABLE. W jego definicji wskazuje się nazwę tabeli, nazwy kolumn, typy danych oraz reguły chroniące poprawność zapisów. Przykładowy zapis może wyglądać następująco:

CREATE TABLE produkty ( id INTEGER PRIMARY KEY, nazwa VARCHAR(150) NOT NULL, cena DECIMAL(10,2), aktywny BOOLEAN DEFAULT TRUE );

W tym przykładzie kolumna id identyfikuje rekord, nazwa przechowuje tekst, cena służy do zapisu wartości liczbowej z częścią dziesiętną, a aktywny informuje o bieżącym statusie produktu. Ograniczenie PRIMARY KEY zapewnia unikalność identyfikatora, NOT NULL wymaga podania nazwy, a DEFAULT ustala wartość używaną wtedy, gdy nie zostanie podana wartość jawna.

Tworzenie tabeli a typy danych

Dobór typu danych wpływa na sposób zapisu, porównywania i przetwarzania wartości. Dla krótkich tekstów często stosuje się VARCHAR, a dla dłuższych treści typ przeznaczony do przechowywania rozbudowanego tekstu. Liczby całkowite mogą być zapisywane jako INTEGER lub typ o większym zakresie, natomiast liczby wymagające precyzyjnej części dziesiętnej powinny korzystać z DECIMAL albo odpowiednika dostępnego w używanym systemie. Do dat i czasu służą typy takie jak DATE, TIME i TIMESTAMP. Wartości logiczne można przechowywać jako BOOLEAN, jeśli dana baza obsługuje ten typ.

Nie powinno się wybierać typu wyłącznie na podstawie aktualnych przykładowych danych. Należy uwzględnić możliwy rozwój aplikacji, dopuszczalną długość tekstu, zakres liczb oraz wymagania dotyczące dokładności. Numer telefonu nie powinien być przechowywany jako liczba, ponieważ może zawierać znak plus, spacje lub zera początkowe. Kod pocztowy również lepiej traktować jako tekst. W przypadku kwot istotne jest zachowanie dokładności, dlatego typ zmiennoprzecinkowy może prowadzić do niepożądanych różnic przy obliczeniach finansowych.

Ważną decyzją jest także sposób obsługi braku wartości. NULL oznacza brak znanej lub zastosowanej wartości i nie jest tym samym co pusty tekst, zero albo wartość logiczna FALSE. Jeżeli informacja musi wystąpić w każdym rekordzie, można zastosować NOT NULL. Gdy brak danych ma znaczenie biznesowe, pozostawienie kolumny dopuszczającej NULL może być właściwsze niż wpisywanie sztucznej wartości zastępczej.

Tworzenie tabeli, klucze i ograniczenia

Klucz główny nadaje rekordom jednoznaczną tożsamość. Zwykle jest to pojedyncza kolumna z identyfikatorem generowanym przez bazę, lecz w niektórych modelach sprawdza się klucz złożony z kilku kolumn. Klucz główny nie powinien zmieniać się przy każdej modyfikacji opisywanego obiektu, ponieważ inne tabele mogą odwoływać się do niego za pomocą kluczy obcych.

Klucz obcy ustanawia powiązanie między tabelami. Jeżeli tabela zamowienia zawiera kolumnę klient_id, może ona wskazywać rekord w tabeli klienci. Takie powiązanie ogranicza ryzyko zapisania identyfikatora klienta, który nie istnieje. Przy projektowaniu należy zdecydować, co ma się wydarzyć po usunięciu lub zmianie rekordu nadrzędnego. Możliwe są między innymi blokada operacji, usunięcie rekordów zależnych albo wyzerowanie odwołania, o ile pozwala na to przyjęty model danych.

Ograniczenie UNIQUE zapobiega powtórzeniu wartości, na przykład adresu poczty elektronicznej albo symbolu produktu. CHECK może wymagać spełnienia określonego warunku, takiego jak nieujemna ilość towaru lub status należący do ustalonego zbioru. DEFAULT ułatwia uzupełnianie wartości technicznych, lecz nie powinno ukrywać braków w danych, które są wymagane z punktu widzenia procesu.

Ograniczenia najlepiej definiować już podczas tworzenia tabeli, ponieważ opisują reguły obowiązujące niezależnie od aplikacji, która korzysta z bazy. Dzięki temu dane pozostają spójne także wtedy, gdy do tego samego zbioru odwołuje się kilka programów, skryptów lub narzędzi administracyjnych.

Tworzenie tabeli a porządkowanie modelu

Przed wydaniem polecenia CREATE TABLE warto ustalić, jakie obiekty mają być przechowywane i które informacje opisują każdy z nich. Jedna kolumna powinna reprezentować jedną cechę, a w jednej komórce nie powinno się umieszczać listy wielu niezależnych wartości rozdzielonych przecinkami. Zamiast przechowywać kilka numerów telefonu w polu tekstowym, można utworzyć osobną tabelę telefonów powiązaną z tabelą osób. Takie rozwiązanie ułatwia wyszukiwanie, walidację i późniejsze rozszerzanie danych.

Podczas projektowania należy rozdzielić dane powtarzalne od danych opisujących pojedynczy obiekt. Informacje o kategorii produktu nie muszą być kopiowane do każdego rekordu produktu. Można przechowywać je w tabeli kategorii i użyć klucza obcego. Ogranicza to liczbę powtórzeń oraz ryzyko, że przy zmianie nazwy kategorii część rekordów pozostanie nieaktualna.

Warto także zachować spójne nazewnictwo. Nazwy tabel i kolumn powinny być jednoznaczne, przewidywalne oraz zgodne z zasadami przyjętymi w danym projekcie. Należy uważać na słowa zarezerwowane przez konkretny system bazodanowy, różnice w wielkości liter oraz znaki specjalne. Dobrą praktyką jest zapisanie definicji w repozytorium projektu lub w kontrolowanym zestawie migracji. Pozwala to odtworzyć strukturę, przejrzeć historię zmian i przygotować to samo środowisko w różnych miejscach.

Na etapie projektowania trzeba przewidzieć także indeksy, ale nie należy tworzyć ich bez analizy. Indeks może przyspieszyć wyszukiwanie po często wykorzystywanej kolumnie, jednak zajmuje miejsce i zwiększa koszt operacji dopisujących oraz aktualizujących dane. Klucz główny i ograniczenia unikalności często powodują utworzenie indeksów automatycznie, natomiast dodatkowe indeksy powinny wynikać z rzeczywistych zapytań.

Tworzenie tabeli i praktyczne sprawdzenie struktury

Po wykonaniu polecenia należy sprawdzić, czy tabela została utworzona zgodnie z założeniami. W zależności od systemu można użyć polecenia opisującego strukturę tabeli, zapytać o metadane albo wyświetlić definicję obiektu. Należy zweryfikować nazwy kolumn, typy danych, możliwość zapisu wartości pustych, wartości domyślne, klucz główny oraz relacje z innymi tabelami.

Przydatny jest test obejmujący zarówno prawidłowy zapis, jak i próby naruszenia reguł. Można sprawdzić, czy brak wymaganej wartości zostanie odrzucony, czy powtórzenie wartości unikalnej zakończy się błędem oraz czy klucz obcy nie pozwoli na utworzenie nieistniejącego powiązania. Warto również przetestować daty graniczne, długie teksty, wartości ujemne i znaki używane w językach innych niż angielski, jeżeli tabela będzie przechowywać dane wielojęzyczne.

Zmiany istniejącej tabeli powinny być planowane ostrożnie. Dodanie kolumny może wymagać wartości domyślnej, jeśli tabela zawiera już rekordy. Skrócenie długości tekstu może spowodować odrzucenie danych albo ich utratę. Usunięcie kolumny lub zmiana typu może wpłynąć na zapytania, formularze, raporty i procesy zasilające bazę. Przed taką operacją należy sprawdzić zależności oraz wykonać kopię danych zgodnie z procedurą obowiązującą w danym środowisku.

Jeżeli problemy z tworzeniem tabeli wynikają z nieprawidłowej konfiguracji komputera, uszkodzonego nośnika albo błędów środowiska programistycznego, można zgłosić się do Warszawskiego Pogotowia Komputerowego 24/7, gdzie serwis obejmuje sprzęt laptopowy i komputery PC. Przy przygotowywaniu zgłoszenia warto opisać używany system bazodanowy, treść komunikatu błędu, moment wystąpienia problemu oraz czynności wykonane przed jego pojawieniem się. Takie informacje ułatwiają odróżnienie błędu w definicji SQL od problemu ze środowiskiem, uprawnieniami lub sprzętem.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę