Mit diesen SQL Scripten kann ein Datenbankserver eingerichtet werden. Sie sind für die MSDE bzw. den Microsoft SQL-Server erstellt, können aber bei Bedarf angepasst werden.
Die Code Ansichten sind mit http://manoli.net/csharpformat/ für bessere Lesbarkeit formatiert worden. Für ein zusammenhängendes SQL-Script als batch-Datei bitte Email an sql@nulllogicone.net
CreateDatabase erstellt eine neue, lokale Datenbankinstanz. Die Pfade und Login Daten müssen angepasst werden.
CreateTables erstellt die benötigten Tabellen und Felder
CreateViews erstellt Abfragen über mehrere Tabellen
Anzahl der Detailtabelleneinträge als Funktionswert für Abfragen. Jeder Stamm weiss wieviele Nachrichten er hat, jede Nachricht kennt ihre Empfänger.
CREATE FUNCTION [oli].Anzahl_PostIt_Stamm() RETURNS TABLE AS RETURN ( SELECT StammGuid, COUNT(*) AS AnzP FROM [oli].Wurzeln GROUP BY StammGuid ) GO
Die meisten Daten werden aus der Datenbank über ihren Primärschlüssel (eine GUID) oder einen Fremdschlüssel abgefragt (dann werden mehrere Zeilen zurückgeliefert). Für die Haupttabellen [SAPCT], [NKBZ] gibt es aus Performancegründen gespeicherte Prozeduren, die von der Data-Access-Layer Schicht verwendet werden.
Die Namen sind aus dem Präfix Get_, dem Tabellen- bzw. View Namen_ und dem Schlüsselparameter gebildet.
CREATE PROCEDURE oli.Get_PostIt_PostItGuid(@PostItGuid uniqueidentifier) AS SELECT oli.PostIt.* FROM oli.PostIt WHERE (PostItGuid = @PostItGuid) GO
CREATE PROCEDURE oli.Get_PostIt_StammGuid(@StammGuid uniqueidentifier) AS SELECT oli.PostIt.* FROM oli.Wurzeln INNER JOIN oli.PostIt ON oli.Wurzeln.PostItGuid = oli.PostIt.PostItGuid WHERE (oli.Wurzeln.StammGuid = @StammGuid) GO
Beschreiben die Beziehungen zwischen Tabellen und die Feldbedingungen der Business Logic auf Datenbank Ebene.
Es gibt erst wenige Trigger, da sie sehr anwendungsspezifisch sind.
-- ============================================= -- wurzeln kann nicht gelöscht werden, wenn -- negativer Betrag bezahlt wurde -- ============================================= use OLIs IF EXISTS (SELECT name FROM sysobjects WHERE name = N'Del_Trigger' AND type = 'TR') DROP TRIGGER Del_Trigger GO CREATE TRIGGER oli.Del_Trigger ON oli.Wurzeln FOR DELETE AS If (SELECT bezahlt FROM DELETED)<0 BEGIN RAISERROR ('Man kann nicht abwurzeln wenn negativer Betrag gezahlt wurde', 16, 1) ROLLBACK TRANSACTION END GO