-- MySQL -- DROP-setninger i tilfelle vi må kjøre scriptet på nytt. DROP TABLE leilighet; DROP TABLE andelseier; DROP TABLE bygning; DROP TABLE borettslag; DROP TABLE poststed; -- Lager tabellene, legger inn NOT NULL- og UNIQUE-krav der det er naturlig -- Vær forsiktig med å legge inn slike krav, det er vanskelig å forandre -- dem i ettertid. CREATE TABLE poststed( postnr SMALLINT, poststed VARCHAR(20) NOT NULL, CONSTRAINT poststed_pk PRIMARY KEY(postnr)); CREATE TABLE borettslag( bolag_navn VARCHAR(20), bolag_adr VARCHAR(40) NOT NULL UNIQUE, etabl_aar SMALLINT NOT NULL, postnr SMALLINT NOT NULL, CONSTRAINT borettslag_pk PRIMARY KEY(bolag_navn)); CREATE TABLE bygning( bygn_id INTEGER NOT NULL AUTO_INCREMENT, bygn_adr VARCHAR(40) NOT NULL, ant_etasjer INTEGER DEFAULT 1, bolag_navn VARCHAR(20) NOT NULL, postnr SMALLINT NOT NULL, CONSTRAINT bygning_pk PRIMARY KEY(bygn_id)); CREATE TABLE leilighet( leil_nr INTEGER NOT NULL AUTO_INCREMENT, ant_rom SMALLINT NOT NULL, ant_kvm REAL NOT NULL, etasje SMALLINT DEFAULT 1, bygn_id INTEGER NOT NULL, and_eier_nr INTEGER NOT NULL UNIQUE, CONSTRAINT leilighet_pk PRIMARY KEY(leil_nr)); CREATE TABLE andelseier( and_eier_nr INTEGER NOT NULL AUTO_INCREMENT, fornavn VARCHAR(30) NOT NULL, etternavn VARCHAR(30) NOT NULL, telefon CHAR(15), ansiennitet SMALLINT, bolag_navn VARCHAR(20) NOT NULL, CONSTRAINT andelseier_pk PRIMARY KEY(and_eier_nr)); -- Fremmednøkler ALTER TABLE borettslag ADD CONSTRAINT borettslag_fk1 FOREIGN KEY(postnr) REFERENCES poststed(postnr); ALTER TABLE bygning ADD CONSTRAINT bygning_fk1 FOREIGN KEY(postnr) REFERENCES poststed(postnr); ALTER TABLE bygning ADD CONSTRAINT bygning_fk2 FOREIGN KEY(bolag_navn) REFERENCES borettslag(bolag_navn); ALTER TABLE leilighet ADD CONSTRAINT leilighet_fk1 FOREIGN KEY(bygn_id) REFERENCES bygning(bygn_id); ALTER TABLE leilighet ADD CONSTRAINT leilighet_fk2 FOREIGN KEY(and_eier_nr) REFERENCES andelseier(and_eier_nr); ALTER TABLE andelseier ADD CONSTRAINT andelseier_fk2 FOREIGN KEY(bolag_navn) REFERENCES borettslag(bolag_navn); -- Legger inn gyldige data INSERT INTO poststed(postnr, poststed) VALUES(2020, 'Skedsmokorset'); INSERT INTO poststed(postnr, poststed) VALUES(6408, 'Aureosen'); INSERT INTO poststed(postnr, poststed) VALUES(7033, 'Trondheim'); INSERT INTO poststed(postnr, poststed) VALUES(7020, 'Trondheim'); INSERT INTO borettslag(bolag_navn, bolag_adr, etabl_aar, postnr) VALUES('Tertitten', 'Åsveien 100', 1980, 7020); INSERT INTO borettslag(bolag_navn, bolag_adr, etabl_aar, postnr) VALUES('Sisiken', 'Brurød', 1990, 7033); INSERT INTO borettslag(bolag_navn, bolag_adr, etabl_aar, postnr) VALUES('Lerken', 'Storgt 5', 2000, 6408); INSERT INTO andelseier(and_eier_nr, fornavn, etternavn, telefon, ansiennitet, bolag_navn) VALUES(DEFAULT, 'Even', 'Trulsbo', '56667743', 3, 'Tertitten'); INSERT INTO andelseier(and_eier_nr, fornavn, etternavn, telefon, ansiennitet, bolag_navn) VALUES(DEFAULT, 'Anna', 'Olsen', '45674588', 10, 'Tertitten'); INSERT INTO andelseier(and_eier_nr, fornavn, etternavn, telefon, ansiennitet, bolag_navn) VALUES(DEFAULT, 'Ingrid', 'Olsen', '45785388', 8, 'Tertitten'); INSERT INTO andelseier(and_eier_nr, fornavn, etternavn, telefon, ansiennitet, bolag_navn) VALUES(DEFAULT, 'Arne', 'Torp', '78565388', 7, 'Tertitten'); INSERT INTO andelseier(and_eier_nr, fornavn, etternavn, telefon, ansiennitet, bolag_navn) VALUES(DEFAULT, 'Arne', 'Martinsen', '78555388', 4, 'Sisiken'); INSERT INTO bygning(bygn_id, bygn_adr, ant_etasjer, bolag_navn, postnr) VALUES(DEFAULT, 'Åsveien 100a', 3, 'Tertitten', 7020); INSERT INTO bygning(bygn_id, bygn_adr, ant_etasjer, bolag_navn, postnr) VALUES(DEFAULT, 'Åsveien 100b', 3, 'Tertitten', 7020); INSERT INTO bygning(bygn_id, bygn_adr, ant_etasjer, bolag_navn, postnr) VALUES(DEFAULT, 'Åsveien 100c', 6, 'Tertitten', 7020); INSERT INTO bygning(bygn_id, bygn_adr, ant_etasjer, bolag_navn, postnr) VALUES(DEFAULT, 'Storgt 10', 2, 'Sisiken', 7020); -- bruker defaultverdien for antall etasjer INSERT INTO bygning(bygn_id, bygn_adr, bolag_navn, postnr) VALUES(DEFAULT, 'Åsveien 100', 'Tertitten', 7020); INSERT INTO leilighet(leil_nr, ant_rom, ant_kvm, etasje, bygn_id, and_eier_nr) VALUES(DEFAULT, 5, 110, 3, 1, 1); INSERT INTO leilighet(leil_nr, ant_rom, ant_kvm, etasje, bygn_id, and_eier_nr) VALUES(DEFAULT, 5, 110, 3, 1, 2); INSERT INTO leilighet(leil_nr, ant_rom, ant_kvm, etasje, bygn_id, and_eier_nr) VALUES(DEFAULT, 2, 50, 1, 3, 3); -- bruker defaultverdien for etasje INSERT INTO leilighet(leil_nr, ant_rom, ant_kvm, bygn_id, and_eier_nr) VALUES(DEFAULT, 5, 110, 1, 4);