S. JI-7.YK BA7. DANYCH SQI.
W ten sposób w schemacie relacji Gwiazda Filmowa będzie występować pięć atrybutów - cztery, które są wymienione na rys. 5.13 i dodatkowy atrybut telefon, który jest tekstem o stałej długości 16 znaków. W krotkach nowej relacji będzie występować składowa telefon, która nie będzie miała określonej wartości, bo nie znamy żadnych numerów telefonów. Zatem tej składowej zostanie przypisana wartość NULL. W punkcie 5.7.5 przekonamy się, że zamiast wartości NULL można określać inne wartości domniemane.
Innym przykładem zmiany schematu relacji może być usunięcie z relacji GwiazdaFi Imowa atrybutu dataUrodzeńia:
ALTER TABLE GwiazdaFiImowa DROP dataUrodzeńia;
□
Przy tworzeniu i modyfikowaniu krotek czasami nie znamy wartości pewnych składowych. W przykładzie opisywanym powyżej, przy dołączaniu kolumny do schematu relacji nie były znane wartości nowego atrybutu dla istniejących już krotek i w związku z tym przypisywano tym składowym wartość NULL. Z kolei w przykładzie 5.2S decydowaliśmy o wstawianiu nowych krotek do relacji studio, znając wyłącznie nazwę studia, a nie znając ani adresu, ani numeru certyfikatu prezesa. Tutaj także pojawiła się potrzeba wstawienia w miejsce składowej takiej wartości, która będzie określać, że prawdziwa wartość nie jest znana.
Jednym z rozwiązań tego zagadnienia w języku SQL jest wartość NULL. Może ona zastępować dow olną inną wartość, jeśli nie jest ona znana, chyba że w relacji zostaną określone więzy NOT NULL, które nic dopuszczają do wstawiania wartości null (opis tego zagadnienia znajduje się w podrozdziale 6.2). Może się jednak zdarzyć, że w sytuacjach, kiedy nie jest znana faktyczna wartość składowej, to powinna zostać wstawiona pewna wartość domniemana, ale nie null.
Na ogół zawsze do deklaracji atrybutu i jego typu możemy dołączyć słowo kluczowe default oraz stosowną wartość domniemaną. Tą wartością może być albo null, albo stała. Mogą to także być inne wartości, które są określane w systemie, na przykład czas bieżący.
PRZYKŁAD 5.34
Rozważmy ponownie przykład 5.32. Gdy nie wiadomo, czy aktor jest mężczyzną lub kobietą, to wypada jako wartości domniemanej dla atrybutu płeć używać np. znaku zapytania ?, a z kolei zamiast nieznanej ćatyLroćzeni a można standardowo wpisywać najwcześniejszą możliwą datę, jaką możemy sobie wyobrazić, np. DATĘ '0000-00-00'. Wiersze 4) i 5) z rys. 5.13 można wówczas zapisać następująco:
4) płeć CHAR(1) DEFAULT ' ?/ ,
5) dataUrodzeńia DATĘ DEFAULT DATĘ '0000-00-00'
Innym przykładem może być domyślna wartość atrybutu telefon, o którym była mowa w przykładzie 5.33; można by określić go jako 'nieznany'. Instrukcja modyfikującą schemat wygląda wówczas w następujący sposób:
DEFAULT
□
ALTER TABLE GwiazdaFilmowa ADD telefon CHAR(16) 'nieznany';
Dotychczas dla każdego atrybutu zawsze określaliśmy jego typ. Inny sposób polega na definiowaniu dziedzin, które są nowymi nazwami typów danych. Inne elementy, takie jak wartości domniemane lub więzy', także można definiować dla dziedzin, ale to zagadnienie zostanie omówione dopiero w p. 6.3.3. W każdym razie deklarując atrybut, można zamiast nazwy typu podać nazwę dziedziny atrybutu. Do jednej dziedziny może należeć kilka atrybutów, co może się okazać wygodne przy określaniu związków między nimi. Jeśli na przykład jakieś dwa atrybuty są określone w jednej dziedzinie, to tym samym wiadomo, że mogą przyjmować takie same wartości.
Dziedzinę definiuje się poprzez słowo kluczowe create DCMAIN, nazwę dziedziny, słowo kluczowe AS oraz typ danych. Schemat tej definicji można przedstawić w następujący sposób:
CREATE DCMAIN <nazwa> AS <opis typu>;
Potem można jeszcze określić wartości domniemane oraz pewne więzy, nazywane więzami dziedziny, o których będzie mowa w p. 6.3.3.
PRZYKŁAD 5.35
Utwórzmy nową dziedzinę tytułów filmów o nazwie DziedzinaFilmów. Można jej używać jako typu atrybutu tytuł w relacji Film, a także jako typu atrybutu tytuł Filmu w relacji GwiazdyW. Poniżej przedstawiono przykładową definicje tego typu:
CREATE DCMAIN DziedzinaFilmu AS VARCHAR{50) DEFAULT 'nieznany';
Czyli wartości w dziedzinie DziedzinaFilmu s<i napisami o dowolnej długości, która nie przekracza 50 znaków, a wartością standardową jest napis
'nieznany'.