Sie sind auf Seite 1von 6

LAND (LName)

Übungsaufgaben LIEFERANT (FName, Jahresumsatz)


04-04 Relationale Anfragen (Automobile)
MOTORART (MArt)
Formulieren Sie die folgenden Anfragen in der
Relationenalgebra
MOTORTYP (MTyp, Leistung, MArt → MOTORART)
1. Alle deutschen Autohersteller
2. Alle Oberklasse-Automodelle (die HERSTELLER (Automarke, LName → LAND)
Oberklasse beginnt bei einem Einstiegspreis
von 80.000 Euro)
AUTOMODELL (AName, Einstiegspreis,
3. Alle Automodelle, die mit mindestens 150 Automarke → HERSTELLER)
PS lieferbar sind
4. Alle Automodelle, die mit einem HAT_FABRIK_IN (Automarke → Hersteller, LName → LAND)
Elektromotor lieferbar sind
5. Alle Automodelle die Teile von einem ANGETRIEBEN_VON (AName → Automodell, MTyp → MOTORTYP)
Lieferanten mit einem Jahresumsatz von
weniger als 100 Millionen Euro enthalten
LIEFERT_FÜR (FName → LIEFERANT, AName → AUTOMODELL,
6. Alle Länder in denen ein Autohersteller Anteil)
seine Hauptverwaltung hat
Übungsaufgaben – Lösungen
Alle deutschen Autohersteller
• pi_Automarke(sigma_LName="Deutschland"(HERSTELLER))
• select Automarke from HERSTELLER where LName = "Deutschland";

Alle Oberklasse-Automodelle (die Oberklasse beginnt bei einem Einstiegspreis von 80.000 Euro).
• pi_AName(sigma_Einstiegspreis>80000(AUTOMODELL))
• select AName from AUTOMODELL where Einstiegspreis > 80000;

Alle Automodelle, die mit mindestens 150 PS lieferbar sind.


• pi_AName(sigma_Leistung>150(ANGETRIEBEN_VON join MOTORTYP))
• select distinct AName from ANGETRIEBEN_VON inner join MOTORTYP on
ANGETRIEBEN_VON.MTyp = MOTORTYP.MTyp where Leistung > 150
Übungsaufgaben – Lösungen
Alle Automodelle, die mit einem Elektromotor lieferbar sind.
• pi_AName(ANGETRIEBEN_VON join (sigma_MArt="Elektromotor"(MOTORTYP)))
• select distinct AName from (ANGETRIEBEN_VON inner join (select * from
MOTORTYP where MArt = "Elektromotor") m on ANGETRIEBEN_VON.MTyp = m.MTyp)

Alle Automodelle die Teile von einem Lieferanten mit einem Jahresumsatz von weniger als 100 Millionen
Euro enthalten.
• pi_AName(LIEFERT_FÜR join (sigma_Jahresumsatz<100000000(LIEFERANT)))
• select distinct AName from (LIEFERT_FÜR inner join (select * from LIEFERANT
where Jahresumsatz < 100000000) l on LIEFERT_FÜR.FName = l.FName)

Alle Länder in denen ein Autohersteller seine Hauptverwaltung hat.


• pi_LName(HERSTELLER)
• select distinct LName from Hersteller
Übungsaufgaben
03-02 Implementierung eines Datenbankschemas
a) Implementieren Sie das das folgende Datenbankschema in SQL.

Videothek (Name, Gruendungsdatum)


Inventar (IID, Name → Videothek)
Film (FID, Name, Dauer, IID → Inventar)

Wählen Sie plausible Datentypen. Wählen Sie plausible „not null“-Constraints. Definieren Sie passende und
benannte Fremdschlüssel. Wählen Sie mögliche IDs.

b) Erstellen Sie in der Datenbank die am 19.10.1985 gegründete Videothek „Blockbuster“ und ein Inventar mit
dem Film „Star Trek: Insurrection“ mit einer Länge von 103 Minuten.

c) Ändern Sie den Namen der Videothek von „Blockbuster“ in „Netflix“


Übungsaufgaben
create table Videothek ( alter table Inventar add constraint FK_Inventar foreign key (Name) references Videothek(Name) on update cascade;
Name varchar(100) not null,
Gruendungsdatum date not null, alter table Film add constraint FK_Inventar foreign key (IID) references Inventar(IID);
primary key (Name)
); insert into Videothek (Name, Gruendungsdatum) values ('Blockbuster', '1985-10-19');

create table Inventar ( insert into Inventar (IID, Name) values (23, 'Blockbuster');
IID int not null,
Name varchar(100) not null, insert into Film(FID, Name, Dauer, IID) values (42, "Start Trek: Insurrection", 103, 23);
primary key (IID)
); update Videothek set Name = 'Netflix' where Name = 'Blockbuster'

create table Film (


FID int not null,
Name varchar(100) not null,
Dauer int not null,
IID int not null,
primary key (FID)
);

Das könnte Ihnen auch gefallen