To jest stara wersja strony!
Projekt logiczny
1. Projektowanie tabel.
Kod SQL tworzący kompletną strukturę danych wykorzystywaną w projekcie wygląda następująco:
SET client_encoding = 'UTF8';
SET standard_conforming_strings = off;
SET check_function_bodies = FALSE;
SET client_min_messages = warning;
SET escape_string_warning = off;
SET search_path = public, pg_catalog;
--
-- Name: dblink_pkey_results; Type: TYPE; Schema: public; Owner: rewersy
--
CREATE TYPE dblink_pkey_results AS (
"position" INTEGER,
colname text
);
ALTER TYPE public.dblink_pkey_results OWNER TO rewersy;
--
-- Name: clean_emp(); Type: FUNCTION; Schema: public; Owner: rewersy
--
CREATE FUNCTION clean_emp() RETURNS INTEGER
AS $$
SELECT numer_pokoju FROM pokoje;
$$
LANGUAGE SQL;
ALTER FUNCTION public.clean_emp() OWNER TO rewersy;
SET default_tablespace = '';
SET default_with_oids = FALSE;
--
-- Name: autorzy; Type: TABLE; Schema: public; Owner: rewersy; Tablespace:
--
CREATE TABLE autorzy (
imie CHARACTER VARYING(45) NOT NULL,
nazwisko CHARACTER VARYING(45) NOT NULL,
id INTEGER NOT NULL
);
ALTER TABLE public.autorzy OWNER TO rewersy;
--
-- Name: autorzy_id_seq; Type: SEQUENCE; Schema: public; Owner: rewersy
--
CREATE SEQUENCE autorzy_id_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
ALTER TABLE public.autorzy_id_seq OWNER TO rewersy;
--
-- Name: autorzy_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: rewersy
--
ALTER SEQUENCE autorzy_id_seq OWNED BY autorzy.id;
--
-- Name: autorzy_id_seq; Type: SEQUENCE SET; Schema: public; Owner: rewersy
--
SELECT pg_catalog.setval('autorzy_id_seq', 161, TRUE);
--
-- Name: ksiazki; Type: TABLE; Schema: public; Owner: rewersy; Tablespace:
--
CREATE TABLE ksiazki (
id INTEGER NOT NULL,
tytul CHARACTER VARYING(45) NOT NULL,
rok_wydania INTEGER,
login CHARACTER VARYING(45),
wydawnictwo CHARACTER VARYING(30)
);
ALTER TABLE public.ksiazki OWNER TO rewersy;
--
-- Name: ksiazki_id_seq; Type: SEQUENCE; Schema: public; Owner: rewersy
--
CREATE SEQUENCE ksiazki_id_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
ALTER TABLE public.ksiazki_id_seq OWNER TO rewersy;
--
-- Name: ksiazki_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: rewersy
--
ALTER SEQUENCE ksiazki_id_seq OWNED BY ksiazki.id;
--
-- Name: ksiazki_id_seq; Type: SEQUENCE SET; Schema: public; Owner: rewersy
--
SELECT pg_catalog.setval('ksiazki_id_seq', 169, TRUE);
--
-- Name: napisali; Type: TABLE; Schema: public; Owner: rewersy; Tablespace:
--
CREATE TABLE napisali (
id_autora INTEGER NOT NULL,
id_ksiazka INTEGER NOT NULL
);
ALTER TABLE public.napisali OWNER TO rewersy;
--
-- Name: przetrzymuje; Type: TABLE; Schema: public; Owner: rewersy; Tablespace:
--
CREATE TABLE przetrzymuje (
data_wypozyczenia DATE,
id_ksiazka INTEGER NOT NULL,
login CHARACTER VARYING(45) NOT NULL
);
ALTER TABLE public.przetrzymuje OWNER TO rewersy;
--
-- Name: rezerwuje; Type: TABLE; Schema: public; Owner: rewersy; Tablespace:
--
CREATE TABLE rezerwuje (
id_ksiazka INTEGER NOT NULL,
login CHARACTER VARYING(45) NOT NULL
);
ALTER TABLE public.rezerwuje OWNER TO rewersy;
--
-- Name: uzytkownik; Type: TABLE; Schema: public; Owner: rewersy; Tablespace:
--
CREATE TABLE uzytkownik (
login CHARACTER VARYING(45) NOT NULL,
imie CHARACTER VARYING(45) NOT NULL,
nazwisko CHARACTER VARYING(45),
e_mail CHARACTER VARYING(50),
haslo CHARACTER VARYING(32),
budynek CHARACTER VARYING(10),
pokoj CHARACTER VARYING(10)
);
ALTER TABLE public.uzytkownik OWNER TO rewersy;
--
-- Name: zaprosil; Type: TABLE; Schema: public; Owner: rewersy; Tablespace:
--
CREATE TABLE zaprosil (
zaproszony CHARACTER VARYING(45) NOT NULL,
login CHARACTER VARYING(45)
);
ALTER TABLE public.zaprosil OWNER TO rewersy;
--
-- Name: zaproszony; Type: TABLE; Schema: public; Owner: rewersy; Tablespace:
--
CREATE TABLE zaproszony (
id INTEGER NOT NULL,
login_polecil CHARACTER VARYING(45),
hash text,
imie CHARACTER VARYING(45),
nazwisko CHARACTER VARYING(45),
email CHARACTER VARYING(50)
);
ALTER TABLE public.zaproszony OWNER TO rewersy;
--
-- Name: zaproszony_id_seq; Type: SEQUENCE; Schema: public; Owner: rewersy
--
CREATE SEQUENCE zaproszony_id_seq
INCREMENT BY 1
NO MAXVALUE
NO MINVALUE
CACHE 1;
ALTER TABLE public.zaproszony_id_seq OWNER TO rewersy;
--
-- Name: zaproszony_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: rewersy
--
ALTER SEQUENCE zaproszony_id_seq OWNED BY zaproszony.id;
--
-- Name: zaproszony_id_seq; Type: SEQUENCE SET; Schema: public; Owner: rewersy
--
SELECT pg_catalog.setval('zaproszony_id_seq', 58, TRUE);
--
-- Name: id; Type: DEFAULT; Schema: public; Owner: rewersy
--
ALTER TABLE autorzy ALTER COLUMN id SET DEFAULT NEXTVAL('autorzy_id_seq'::regclass);
--
-- Name: id; Type: DEFAULT; Schema: public; Owner: rewersy
--
ALTER TABLE ksiazki ALTER COLUMN id SET DEFAULT NEXTVAL('ksiazki_id_seq'::regclass);
--
-- Name: id; Type: DEFAULT; Schema: public; Owner: rewersy
--
ALTER TABLE zaproszony ALTER COLUMN id SET DEFAULT NEXTVAL('zaproszony_id_seq'::regclass);
--
-- Data for Name: autorzy; Type: TABLE DATA; Schema: public; Owner: rewersy
--
--
-- Name: autorzy_pkey; Type: CONSTRAINT; Schema: public; Owner: rewersy; Tablespace:
--
ALTER TABLE ONLY autorzy
ADD CONSTRAINT autorzy_pkey PRIMARY KEY (id);
--
-- Name: ksiazki_pkey; Type: CONSTRAINT; Schema: public; Owner: rewersy; Tablespace:
--
ALTER TABLE ONLY ksiazki
ADD CONSTRAINT ksiazki_pkey PRIMARY KEY (id);
--
-- Name: napisali_pkey; Type: CONSTRAINT; Schema: public; Owner: rewersy; Tablespace:
--
ALTER TABLE ONLY napisali
ADD CONSTRAINT napisali_pkey PRIMARY KEY (id_autora, id_ksiazka);
--
-- Name: przetrzymuje_pkey; Type: CONSTRAINT; Schema: public; Owner: rewersy; Tablespace:
--
ALTER TABLE ONLY przetrzymuje
ADD CONSTRAINT przetrzymuje_pkey PRIMARY KEY (id_ksiazka, login);
--
-- Name: rezerwuje_pkey; Type: CONSTRAINT; Schema: public; Owner: rewersy; Tablespace:
--
ALTER TABLE ONLY rezerwuje
ADD CONSTRAINT rezerwuje_pkey PRIMARY KEY (id_ksiazka, login);
--
-- Name: uzytkownik_pkey; Type: CONSTRAINT; Schema: public; Owner: rewersy; Tablespace:
--
ALTER TABLE ONLY uzytkownik
ADD CONSTRAINT uzytkownik_pkey PRIMARY KEY (login);
--
-- Name: zaprosil_pkey; Type: CONSTRAINT; Schema: public; Owner: rewersy; Tablespace:
--
ALTER TABLE ONLY zaprosil
ADD CONSTRAINT zaprosil_pkey PRIMARY KEY (zaproszony);
--
-- Name: zaproszony_pkey; Type: CONSTRAINT; Schema: public; Owner: rewersy; Tablespace:
--
ALTER TABLE ONLY zaproszony
ADD CONSTRAINT zaproszony_pkey PRIMARY KEY (id);
--
-- Name: ksiazki_login_fkey; Type: FK CONSTRAINT; Schema: public; Owner: rewersy
--
ALTER TABLE ONLY ksiazki
ADD CONSTRAINT ksiazki_login_fkey FOREIGN KEY (login) REFERENCES uzytkownik(login) ON UPDATE RESTRICT ON DELETE RESTRICT;
--
-- Name: napisali_id_autora_fkey; Type: FK CONSTRAINT; Schema: public; Owner: rewersy
--
ALTER TABLE ONLY napisali
ADD CONSTRAINT napisali_id_autora_fkey FOREIGN KEY (id_autora) REFERENCES autorzy(id) ON UPDATE RESTRICT ON DELETE RESTRICT;
--
-- Name: napisali_id_ksiazka_fkey; Type: FK CONSTRAINT; Schema: public; Owner: rewersy
--
ALTER TABLE ONLY napisali
ADD CONSTRAINT napisali_id_ksiazka_fkey FOREIGN KEY (id_ksiazka) REFERENCES ksiazki(id) ON UPDATE RESTRICT ON DELETE RESTRICT;
--
-- Name: przetrzymuje_id_ksiazka_fkey; Type: FK CONSTRAINT; Schema: public; Owner: rewersy
--
ALTER TABLE ONLY przetrzymuje
ADD CONSTRAINT przetrzymuje_id_ksiazka_fkey FOREIGN KEY (id_ksiazka) REFERENCES ksiazki(id) ON UPDATE RESTRICT ON DELETE RESTRICT;
--
-- Name: przetrzymuje_login_fkey; Type: FK CONSTRAINT; Schema: public; Owner: rewersy
--
ALTER TABLE ONLY przetrzymuje
ADD CONSTRAINT przetrzymuje_login_fkey FOREIGN KEY (login) REFERENCES uzytkownik(login) ON UPDATE RESTRICT ON DELETE RESTRICT;
--
-- Name: rezerwuje_id_ksiazka_fkey; Type: FK CONSTRAINT; Schema: public; Owner: rewersy
--
ALTER TABLE ONLY rezerwuje
ADD CONSTRAINT rezerwuje_id_ksiazka_fkey FOREIGN KEY (id_ksiazka) REFERENCES ksiazki(id) ON UPDATE RESTRICT ON DELETE RESTRICT;
--
-- Name: rezerwuje_login_fkey; Type: FK CONSTRAINT; Schema: public; Owner: rewersy
--
ALTER TABLE ONLY rezerwuje
ADD CONSTRAINT rezerwuje_login_fkey FOREIGN KEY (login) REFERENCES uzytkownik(login) ON UPDATE RESTRICT ON DELETE RESTRICT;
--
-- Name: zaprosil_login_fkey; Type: FK CONSTRAINT; Schema: public; Owner: rewersy
--
ALTER TABLE ONLY zaprosil
ADD CONSTRAINT zaprosil_login_fkey FOREIGN KEY (login) REFERENCES uzytkownik(login) ON UPDATE RESTRICT ON DELETE RESTRICT;
--
-- Name: zaproszony_login_polecil_fkey; Type: FK CONSTRAINT; Schema: public; Owner: rewersy
--
ALTER TABLE ONLY zaproszony
ADD CONSTRAINT zaproszony_login_polecil_fkey FOREIGN KEY (login_polecil) REFERENCES uzytkownik(login) ON UPDATE RESTRICT ON DELETE RESTRICT;
2. Słownki danych.
autorzy:
ksiazki:
id - typ: serial, niepusty, Klucz podstawowy tabeli ksiażki
tytul - typ: character varying(45), Tytuł książki, która jest dostępna w systemie
rok_wydania - typ: integer, Rok wydania książki
login - typ: character varying(45), klucz obcy - tabela 'uzytkownik' Login użytkownika, który jest właścicielem książki
wydawnictwo - typ: character varying(30), Wydawnictwo, które wydało książkę
napisali:
id_autora - typ: integer, niepusty, klucz obcy z tabeli 'autorzy', klucz podstawowy: (id_autora, id_ksiazka), Identyfikator autora
id_ksiazka - typ: integer, niepusty, klucz obcy z tabeli 'ksiazki', klucz podstawowy: (id_autora, id_ksiazka), Identikator książki
uzytkownik:
login - typ: character varying(45), niepusty, Klucz podstawowy
imie - typ: character varying(45), niepusty, Imię użytkownika
nazwisko - typ: character varying(45), Nazwisko użytkownika
e_mail - typ: character varying(50), E-mail użytkownika
haslo - typ: character varying(32), hasło użytkownika do systemu, trzymane w bazie w postaci zakodowanej
budynek - typ: character varying(10), Nazwa budynku AGH, w którym pracuje użytkownik systemu
pokoj - typ: character varying(10), Pokój na uczelni AGH, gdzie użytkownik pracuje użytkownika systemu
przetrzymuje:
data_wypozyczenia - typ: date, Data wypożyczenia książki
id_ksiazka - typ: integer, niepusty, Klucz obcy z tabeli 'ksiazki' Identyfikator książki, która została pożyczona
login - typ: character varying(45), niepusty, klucz obcy z tabeli 'uzytkownik' Login użytkownika, który wypożyczył daną książkę
- typ: ,
- typ: ,
- typ: ,
3. Analiza zależności funkcyjnych i normalizacja tabel.
4. Denormalizacja struktury tabel.
5. Projektowanie operacji na danych.