To jest właściwie taka moja ściągawka (szczególnie w dalszej części) przy projektowaniu schematów bazy danych, a dokładniej w fazie implementacji schematu. Tym nie mniej mam nadzieję, że te zwięzłe porady nie będą szczególnie enigmatyczne dla średniozaawansowanych programistów. Osoby początkujące z pewnością powinny poczytać trochę od podstawach projektowania baz danych i może mój mini artykuł o tabelach, co by potem zejść na ziemię ;). Nie żebym uważał się za bóg-wie-kogo, ale uczyłem się na renomowanej uczelni, a później zostałem rzucony w wir praktyki.
KEY costam_id (costam_id) | słówko za KEY jest nazwą klucza (w zasadzie dowolną), drugie słówko, to nazwa atrybutu |
---|
PRIMARY KEY costam_id (costam_id) | składnia identyczna jak wyżej |
---|
Wybieramy zależnie od przewidywanej wielkości, ale z rozsądnym zapasem!
int UNSIGNED | (max. 4294967295) |
---|---|
mediumint UNSIGNED | (max. 16777215) |
smallint UNSIGNED | (max. 65535) |
tinyint UNSIGNED | (max. 255) |
tinyint(1) | jako typ boolean, czyli logiczny (albo jakieś statusy wszelkie) |
---|---|
decimal(10,2) | cena (9876543210.12); jest też float, ale chyba nigdy nie używałem |
int(11) | data (zwrócone z mktime na przykład); można używać datetime, ale int(11) dla daty używa np.phpBB, żeby uniknąć m.in. problemów z różnymi strefami czasowymi i formatowaniem przez SQL-a |
varchar(m) | dla m-znakowych jednolinijkowców; ważne jest rozsądne ograniczenie - w razie czego można wydłużać przez ALTER TABLE; maksimum dla m=255 znaków |
text | dla większych tekstów, czyli w sumie dla wszystkiego poza bardzo krótkim komentarzem; niestety z doświadczenia wiem, że zajawka (streszczenie) artykułu często nie łapie się do tej kategorii |
blob | dla danych binarnych (np. plików, w szczególności obrazków) |
Tutaj podaję te ktróre najłatwiej zapomnieć, bo są najrzadziej używane.
Stworznie bazy jest proste:
CREATE DATABASE nazwa_bazy_danych;
Gorzej z użytkownikiem. Co ciekawe użytkownika się tak naprawdę nie tworzy, tylko daje mu się dostęp (ang. grant access).
GRANT ALL ON nazwa_bazy_danych.* TO nazwa_uzytkownika@localhost IDENTIFIED BY 'haslo_uzytkownika';
Jeśli działa się na paru wersjach MySQL, to dobrze jest też dodać coś takiego:
SET PASSWORD FOR nazwa_uzytkownika@localhost = OLD_PASSWORD('haslo_uzytkownika');
Tworzenie i usuwanie przydaje się przy rozpoczynaniu zabawy z implementacją systemu. Potem należy już to robić bardzo, bardzo ostrożnie, bo można stracić cenne dane.
Poniższa sekwencja najpierw usunie, a potem stworzy tabelę o nazwie "tabelka"
DROP TABLE IF EXISTS tabelka; CREATE TABLE tabelka ( tabelka_id int UNSIGNED NOT NULL AUTO_INCREMENT, nazwa varchar(30), error tinyint(1), czas int(10), cena decimal(10,2), tekst text, obrazek blob, dluga_powiazana_tabelka_id int UNSIGNED, krotka_powiazana_tabelka_id smallint UNSIGNED, PRIMARY KEY (tabelka_id), KEY (dluga_powiazana_tabelka_id), KEY (krotka_powiazana_tabelka_id) );