hkl: Wozu die Normalform [1.|2.|3.] (NF)

Beitrag lesen

Hallo Erwin !

  
CREATE TABLE calls  
{  
--  id INTEGER UNSIGNED AUTO_INCREMENT NOT NULL,  
  zeit TIMESTAMP DEFAULT 'CURRENT_TIME',  
  next_date DATETIME,  
  name VARCHAR(30) NOT NULL,  
  eaz VARCHAR(30) DEFAULT '001',  
  lieblingsblume VARCHAR(20)  
--  PRIMARY KEY(id)  
};  

Jetzt ruft am 11.11. Annabel auf '-007' an.
Dto Barbara auf '-008'.
Dto Christine auf '-009'.

( Schliesslich ist Fasching ! )

Wie verhindert man jetzt Chistine auf der '008' zurueckzurufen und ihr Orchideen statt Astern mitzubringen ???
Kopiert man dann zu jedem Date die Lieblingsblume vom vorangegangenen ?

  
DROP TABLE IF EXISTS dates ;  
DROP TABLE IF EXISTS blumen;  
DROP TABLE IF EXISTS buddies;  
  
CREATE TABLE IF NOT EXISTS buddies  
(  
  id INTEGER UNSIGNED AUTO_INCREMENT NOT NULL,  
  name VARCHAR(30) NOT NULL,  
  eaz VARCHAR(30) DEFAULT '001',  
  PRIMARY KEY(id)  
);  
  
--  
-- Auch das koennte man natuerlich noch in zwei Tabellen aufteilen.  
-- In welche und warum ?  
--  
CREATE TABLE IF NOT EXISTS blumen  
(  
        id INTEGER UNSIGNED AUTO_INCREMENT NOT NULL,  
        name VARCHAR(30) NOT NULL,  
        ranking INTEGER UNSIGNED NOT NULL,  
        buddy_id INTEGER UNSIGNED NOT NULL,  
        PRIMARY KEY(id),  
        UNIQUE INDEX (id, ranking),  
        FOREIGN KEY(buddy_id)  
                REFERENCES buddies(id)  
                        ON DELETE CASCADE  
                        ON UPDATE CASCADE  
);  
  
CREATE TABLE IF NOT EXISTS dates  
(  
--  id INTEGER UNSIGNED AUTO_INCREMENT NOT NULL,  
        zeit TIMESTAMP DEFAULT 'CURRENT_TIME',  
        next_date DATETIME,  
        buddy_id INTEGER UNSIGNED NOT NULL,  
--  PRIMARY KEY(id),  
        FOREIGN KEY(buddy_id)  
                REFERENCES buddies(id)  
                        ON DELETE CASCADE  
                        ON UPDATE CASCADE  
);  

Kennst Du die Martini-Werbung in der George Clooney vor der Tuer bleibt ?
Der hatte wohl seine Datenbank nicht normalisiert und oefter mal verrissen...

Gruesse

HoLger

--
Aus dem Perl Styleguide:
"Choose mnemonic identifiers. If you can't remember what mnemonic means, you've got a problem."