BEGIN; -- Fart?yID -> Registreringsmerke bryter med BCNF -- Tillukningen til Fart?yID er {Fart?yID, Registreringsmerke}, -- alts? f?r vi f?lgende (som ikke bryter med BCNF): CREATE TABLE fiskeri.Fart?y ( Fart?yID text PRIMARY KEY, Registreringsmerke text ); -- Har n? en tabell med alle attributter bortsett fra Registreringsmerke -- Tillatelsekode -> Tillatelse bryter med BCNF -- Tillukningen til Tillatelsekode er {Tillatelsekode, Tillatelse}, -- s? f?r f?lgende (som ikke bryter BCNF): CREATE TABLE fiskeri.TillatelseInfo ( Tillatelsekode text PRIMARY KEY, Tillatelse text ); -- Har n? en tabell med alle attributter bortsett fra Registreringsmerke og Tillatelse -- TillatelseID -> Datapr bryter med BCNF -- Tillukningen til TillatelseID er {TillatelseID, Datapr, Fart?yID, Tillatelsekode, -- TillatelseGjelderFraDato, TillatelseGjelderTilDato, -- KvotestrGjelderFraDato, KvotestrGjelderTilDato}, -- s? f?r f?lgende (som ikke bryter BCNF): CREATE TABLE fiskeri.Tillatelse ( Datapr text, Fart?yID text REFERENCES fiskeri.Fart?y(Fart?yID), Tillatelsekode text REFERENCES fiskeri.TillatelseInfo(Tillatelsekode), TillatelseID text PRIMARY KEY, TillatelseGjelderFraDato timestamp, TillatelseGjelderTilDato timestamp, KvotestrGjelderFraDato date, KvotestrGjelderTilDato date ); -- St?r n? igjen med f?lgende tabell, som ikke bryter med BCNF: CREATE TABLE fiskeri.TillatelseDetaljer ( TillatelseID text REFERENCES fiskeri.Tillatelse(TillatelseID), Linjenummer int, Linjenummerbeskrivelse text, Kvotest?rrelse text, CONSTRAINT td_pk PRIMARY KEY (TillatelseID, Linjenummer) ); -- Setter s? inn data fra fiskeri.kvoter i hver tabell: INSERT INTO fiskeri.Fart?y SELECT DISTINCT Fart?yID, Registreringsmerke FROM fiskeri.kvoter; INSERT INTO fiskeri.TillatelseInfo SELECT DISTINCT Tillatelsekode, Tillatelse FROM fiskeri.kvoter; INSERT INTO fiskeri.Tillatelse SELECT DISTINCT Datapr, Fart?yID, Tillatelsekode, TillatelseID, TillatelseGjelderFraDato, TillatelseGjelderTilDato, KvotestrGjelderFraDato, KvotestrGjelderTilDato FROM fiskeri.kvoter; INSERT INTO fiskeri.TillatelseDetaljer SELECT DISTINCT TillatelseID, Linjenummer, Linjenummerbeskrivelse, Kvotest?rrelse FROM fiskeri.kvoter WHERE Linjenummer IS NOT NULL; -- Finnes rader i kvoter som mangler linjenummer COMMIT;