| 

.NET C# Java Javascript Exception

2
Hallo Leute,

In meiner Datenbank für eine Kinoverwaltung muss bei Anlage einer neuen Vorführung in der Tabelle tblPlatzreservierung für jeden Platz des Saales ein Satensatz angelegt werden.

Wie würdet ihr diesen Trigger anlegen?

mein Quellcode sieht so aus:

create trigger Reservierungs_anlage
on tblVorfuehrungen
after insert
as
begin
Declare @satzanzahl int
Declare @i int = 0

select @satzanzahl = count(Sitzplatz_ide) from tblSitzplatz

while @i <= @satzanzahl - 1
begin
set @i = @i + 1
insert into tblPlatzreservierung (Res_Vorfuehrung, Res_Sitzplatz) Values (Vorfuehrungsnummer, Sitzplatz_ide)
end
end


Problem hierbei ist, dass ich nicht jeden einzelnen Datensatz aus dem tblSitzplatz nacheinander übertragen kann.
Kennt ihr eine Lösung?

Danke im Vorraus
24.03.2013
0Muddy0 1 1
Versteh noch nicht ganz was du erreichen willst.
Floyd 24.03.2013
1 Antwort
3
Warum so umständlich?

Ich würde eine Tabelle mit den Kinosälen inklusive Sitzplätzen, eine für die Vorführungen und eine Belegungstabelle, die nur Verweise zwischen den Sitzplätzen und der Vorführung beinhaltet anlegen.

Die Sitzplatztabelle wird einmalig mit allen Kinosälen und Sitzplatznummern befüllt. Für neue Vorführungen wird in der Vorführungen-Tabelle ein Datensatz angelegt, der den Kinosaal enthält.

Damit hast du über einen Join alle Sitzplätze, für eine Vorführung. Per Definition ist ein Sitzplatz, der nicht belegt ist, frei. Belegte Sitzplätze trägst du als Verweis zwischen Vorführung und Sitzplatz in die Belegungstabelle.

So hast du beim Anlegen nicht die Notwendigkeit alle Sitzplätze irgendwie doppeln zu müssen. Und es fallen auch weniger Daten an, da nur noch die belegten Sitzplätze als Verweis gespeichert werden. Relationale Datenhaltung eben.
24.03.2013
Andreas Richter 1,7k 1 2 8

Stelle deine Tabellen-Frage jetzt!