Gruppe 1: Online Buchgroßhandel Editions(id,number, book_id -> Books.id,release, selling_price, purchase price, description, language_id -> Languageid, stock, width, height, depth, weight, type) Books(id, publisher_id -> Publishers.id, GTIN, isbn9, isbn13, title) Authors(author_id, name) Publishers(id, name) Für Kunden nicht sichtbare Tabellen: Authors_Editions(id, edition_id, author_id) Language(id, name) Customers(id, name, street, number, zip_code, city, state, country) Order_Position(id, order_id -> Orders.id, edition_id -> ???, amount) Orders(id, order_position_id -> OrderPosition.id, customer_id -> Customers.id,date) Was ist mit Stichwortsuche gemeint? Gebundene Variable? Filter erlaubt auf: Editions.purchase price, Editions.language_id, Editions.stock, Editions.type, Publishers.name, Genauere Informationen: Editions(id: int (PK), number: unsigned int, book_id: int (FK), release*: unsigned int, selling_price (net): float, purchase price (net)**: float, description: text, image: string (path), language_id**: int (FK), stock**: usigned int, width: float, height: float, depth: float, weight: float, type*/**: string) Books(id***: int (PK), publisher_id***: int (FK), GTIN*: string(14), isbn9*: string(9), isbn13*: string(13), title*: string) Authors(author_id***: int (PK), name*/**: string) Publishers(id***: int (PK), name*/**: string) Authors_Editions***(id: int (PK), edition_id: int (FK), author_id: int (FK)) Language***(id: int PK, name: sting) Customers***(id: int (PK), name: string, street: string, number: string, zip_code: string, city: string, state: string, country: string) Order_Position***(id: int (PK), order_id: int (FK), edition_id: int (FK), amount: decimal) Orders***(id: int (PK), order_position_id: int (FK), customer_id: int (FK), date: datetime) PK = private key FK = foreign key * über Stichwortsuche abfragbar ** als Filterkriterium auf Suchergebnisse anwendbar *** privater Wert (wird für Kunden/Nutzer nicht sichtbar) ############################################################################# Gruppe 2: Marktplatz für gebrauchte Bücher Buecher(ISBN-Nummer, Autor, Titel, Verlag, Kategorie, Neupreis) Verkaeufer(Verkäufer, Bewertung) Bestand(Verkäufer -> Verkaeufer.Verkäufer, ISBN-Nummer -> Buecher.ISBN-Nummer, Verkaufspreis, Zustand, Verfügbarkeit), Kein Verkaufspreis? Was ist der PK bei Bücher? Interface, Selektionskriterien Suchen nach: ISBN-Nummer, Autor, Titel, Kategorie Filter: Zustand, Verkaufspreis ############################################################################# Gruppe 3: Buchverlag BUCH(ID, TITEL) AUTOR(ID, NACHNAME, VORNAME, ADRESSE, EMAIL) BUCH_X_AUTOR(ID, BUCH_ID -> BUCH.ID, AUTOR_ID -> AUTOR.ID) GENRE(ID, NAME, BESCHREIBUNG) BUCH_X_GENRE(ID, BUCH_ID -> BUCH.ID, GENRE_ID -> GENRE.ID) AUSGABE_TYP(ID, BESCHREIBUNG, TYP_UUID_BESCHREIBUNG) AUSGABE(ID, BUCH_ID, PREIS_UVP, ANZAHL_PRODUZIERT, ANZAHL_VERKAUFT, TYP_ID -> AUSGABE_TYP.ID, TYP_UUID, AUSGEGEBEN_AM) REVIEW(ID, BUCH_ID -> BUCH.ID, AUSGABE_ID -> AUSGABE.ID, BESCHREIBUNG, RATING) ALS SQL DDL-Statements: CREATE TABLE BUCH ( -- AUTO_INCREMENT mit int in mysql, postgres eigener datentyp ID SERIAL PRIMARY KEY, TITEL VARCHAR(255) ); CREATE TABLE AUTOR ( ID SERIAL PRIMARY KEY, NACHNAME VARCHAR(255), VORNAME VARCHAR(255), -- nicht gerade optimal für eine adresse ADRESSE VARCHAR(255), EMAIL VARCHAR(255) ); -- Buch n:n Autor CREATE TABLE BUCH_X_AUTOR ( ID SERIAL PRIMARY KEY, BUCH_ID INT REFERENCES BUCH (ID), AUTOR_ID INT REFERENCES AUTOR (ID) ); CREATE TABLE GENRE ( ID SERIAL PRIMARY KEY, NAME VARCHAR(255), BESCHREIBUNG VARCHAR(255) ); -- Buch n:n Genre CREATE TABLE BUCH_X_GENRE ( ID SERIAL PRIMARY KEY, BUCH_ID INT REFERENCES BUCH (ID), GENRE_ID INT REFERENCES GENRE (ID) ); -- AusgabeTyp 1:n Ausgabe CREATE TABLE AUSGABE_TYP ( ID SERIAL PRIMARY KEY, -- Bspw Taschenbuch, Hardcover o.ä BESCHREIBUNG VARCHAR(255), -- legt den typ von TYP_UUID in Ausgabe fest, bspw. ISBN TYP_UUID_BESCHREIBUNG VARCHAR(255) ); -- Buch 1:n Ausgabe CREATE TABLE AUSGABE ( ID SERIAL PRIMARY KEY, BUCH_ID INT REFERENCES BUCH (ID), PREIS_UVP DECIMAL(5, 2), ANZAHL_PRODUZIERT INT, ANZAHL_VERKAUFT INT, TYP_ID INT REFERENCES AUSGABE_TYP (ID), --bspw die ISBN TYP_UUID VARCHAR(255), AUSGEGEBEN_AM DATE -- Publisher? Sind ja eigentlich nur wir, ansonsten ID ); -- Buch n:1 Review CREATE TABLE REVIEW ( ID SERIAL PRIMARY KEY, BUCH_ID INT REFERENCES BUCH (ID) NOT NULL, AUSGABE_ID INT REFERENCES AUSGABE (ID), BESCHREIBUNG TEXT, RATING INT -- link auf Autor? Wir profilen ja nicht das Internet... ); ############################################################################# Gruppe 4: Bookscrobble ############################################################################# Gruppe 5: Lokaler Einzelhandel für Kochbücher Buch(BNR,VNR -> Verlag.VNR, Autor, Erscheinungsjahr, Preis, Titel, ISBN, Auflage, Seiten, Anzahl, Tags) Kunde(KNR, Name, Vorname, Titel, Telefon, Adresse, Geburtstag) Verlag(VNR, Name, Adresse, Telefon) Bestellung(BstNr, KNr -> Bestellung.BstNr, Datum, Summe) Bestellposition(PosNr, BstNr -> Bestellung.BstNr, BNR -> Buch.BNR, Anzahl) ALS SQL DDL-Statements: CREATE TABLE Buch BNR int unique not null PRIMARY KEY, VNR int not null FOREIGN KEY REFERENCES Verlag(VNR), Autor varchar(50), Erscheinungsjahr date, Preis double, Titel varchar(50), ISBN char(13), Auflage varchar(50), Seiten int Anzahl int Tags varchar(255) CREATE TABLE Kunde KNR int unique not null PRIMARY KEY, Name varchar(50), Vorname varchar(50), Titel varchar(50), Telefon varchar(50), Adresse varchar(50), Geburtstag date, CREATE TABLE Verlag VNR int unique not null PRIMARY KEY, Name varchar(50), Adresse varchar(50), Telefon varchar(50) CREATE TABLE Bestellung BstNr int unique not null PRIMARY KEY, KNr int not null FOREIGN KEY REFERENCES Bestellung(BstNr) Datum Summe CREATE TABLE Bestellposition PosNr int unique not null PRIMARY KEY, BstNr int not null FOREIGN KEY REFERENCES Bestellung(BstNr) BNR int not null FOREIGN KEY REFERENCES Buch(BNR) Anzahl int ############################################################################# Gruppe 6: Amerikanischer Online Buchgroßhandel Book(ISBN, Name, Author, Publisher, Edition, Language, Price, Release-Date, Genre, Type) Author(ID, Name) Publisher(ID, Name, Location) Genre(ID, Name) Language(ISO, Name) Type(ID, Name)