Rozdział 12. ♦ Tworzenie bazy w praktyce 347
oznaczać to będzie, że Jan Kowalski, Andrzej Nowak i Adam Malinowski to w rzeczywistości ten sam autor, publikujący pod różnymi pseudonimami. Możemy też przyjąć dodatkowo założenie, że pierwsza kolumna odzwierciedla dane autorów, a druga — pseudonimów. Wtedy będziemy w stanie powiedzieć również, że Jan Kowalski to prawdziwe imię i nazwisko autora publikującego pod pseudonimami Andrzej Nowak i Adam Malinowski. Musimy się jednak dobrze zastanowić, czy na pewno zawsze będzie można wysnuć taki wniosek. Istnieje bowiem możliwość, że autor o nieznanym nam prawdziwym imieniu i nazwisku będzie publikował pod dwoma różnymi pseudonimami. W takim wypadku dodatkowe założenie, że pierwsza kolumna zawsze przedstawia faktyczne dane autora, nie będzie już prawdziwe. Niezależnie jednak od tego, którą z powyższych opcji przyjmiemy, taka konstrukcja tabeli Autorzy Pseudonimy zawsze pozwoli nam odnaleźć książki jednego autora publikującego pod różnymi nazwiskami, a takie było właśnie nasze pierwotne założenie. Instrukcja SQL tworząca tę tabelę będzie miała postać:
CREATE TABIE AutorzyPseudonimyt 'AutorId1' INTEGER NOT NULL.
'AutorId2" INTEGER NOT NULL.
PRIMARY KEYCAutorldl'. 'AutorId2')
Pełny kod tworzący podstawową strukturę tabel został przedstawiony na listingu 12.1, natomiast szczegółowy diagram tabel zawierający zapis ich struktury jest widoczny na rysunku 12.5.
Listing 12.1. Kod tworzący tabele bazy obsługującej księgarnię_
CREATE TABLE Książki(
'Id' INTEGER AUTO INCREMENT PRIMARY KEY. 'Wydawnictwold' INTEGER NOT NULL.
'Tytuł' VARCHAR<45) NOT NULL.
'ISBN' VARCHAR(10),
'Rok wydania' YEAR.
'Opis' TEXT,
'Cena' DECIMAL(5.2)
CREATE TABLE Autorzyt 'Id' INTEGER AUTOJNCREMENT PRIMARY KEY. 'Nazwa' VARCHAR(45) NOT NULL
CREATE TABLE KsiążkiAutorzyt 'Książkald' INTEGER NOT NULL. 'Autorld' INTEGER NOT NULL.
PRIMARY KEY('KsiążkaId', 'Autorld')
CREATE TABLE Wydawnictwat 'Id' INTEGER AUTOJNCREMENT PRIMARY KEY. 'Nazwa' VARCHAR(45) NOT NULL.
'Adres' VARCHAR(60)