AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Was muss man beachten bei eine DB Anwenung in Netz?
Thema durchsuchen
Ansicht
Themen-Optionen

Was muss man beachten bei eine DB Anwenung in Netz?

Ein Thema von Karstadt · begonnen am 15. Mär 2006 · letzter Beitrag vom 20. Mär 2006
Antwort Antwort
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

Re: Was muss man beachten bei eine DB Anwenung in Netz?

  Alt 20. Mär 2006, 07:58
Ein Tipp:
Sämtliche Zugriffe vom Client/Mittelschicht an die DB laufen über Views. Die den Views zugrunde liegende Struktur (Tabellen- und Feldnamen, die konkreten Datentypen etc.) sind für die Mittelschicht absolut unsichtbar. Somit kannst du die Tabellen verändern, wie Du lustig bist.

Schreibzugriffe erfolgen über "Updateable Views" (Standard SQL), oder über Stored Procedures (mein Favorit).

Updateable Views sind einfacher zu programmieren, aber ich mag Trigger nicht (weil man vergisst, das da welche sind ). Ich verwende lieber so etwas:
SQL-Code:
Create Procedure Customer_Modify
  @Action Char (1), /* 'I' - Insert, 'D' - Delete, 'U' - Update, 'R' - Remove */
  @Name VarChar (20),
  @Vorname VarChar (20),
...
  @CustomerID int output
as
  If @Action = 'Ibegin -- 'Insert' fügt einen neuen Kundendatensatz ein und liefert die ID
    /* Code für ein BEFORE INSERT Trigger */
    Insert into Customer (Name, Vorname, Valid) Values (@Name, @Vorname, 1)
    select @CustomerID = @@Identity /* Die Spalte 'CustomerID' ist ein AutoInc, so bekommt man den unter MSSQL */
    /* Code für ein AFTER INSERT Trigger */
  End
  If @Action = 'Dbegin /* 'Delete' soll den Datensatz nicht löschen, sondern z.B. nur als 'ungültig' markieren */
    /* Code für einen ON BEFORE UPDATE (Valid) Trigger */
    Update Customer set Valid = 0 Where CustomerID = @CustomerID
    /* Code für einen ON AFTER UPDATE (Valid) Trigger */
  End
  If @Action = 'Ubegin /* 'Update' modifiziert die Kundentabelle */
    /* Code für einen ON BEFORE UPDATE Trigger */
    Update Customer Set Name = @Name, Vorname = @Vorname Where CustomerID = @CustomerID
    /* Code für einen ON AFTER UPDATE Trigger */
  End
  If @Action = 'Rbegin /* 'Remove' entfernt einen Kundendatensatz inklusive der Details */
    /* Code für einen ON BEFORE DELETE Trigger */
    Delete From CustomerRelations Where CustomerID = @CustomerID
    Delete From Customer Where CustomerID = @CustomerID
  End
/* Hier vielleicht noch Code, der immer ausgeführt werden soll, wenn sich was am Kunden geändert hat */
Ich habe somit die vollständige Kontrolle, was bei welchen Datenmodifikation geschehen soll. Früher hatte ich vier Stored Procedures ('Customer_Insert', 'Customer_Delete' etc.), aber das müllt die SP-Liste nur zu.

Damit habe ich die besten Resultate in der kürzesten Zeit erzielt. Nachträgliche Änderungen am Verhalten (z.B. Einbau eines Logfiles bei Änderungen am Kundenstamm) sind so ohne Modifikation an der Anwendung selbst online möglich, d.h. ohne das die Anwendung selbst gestoppt werden muss.

Ich find's so am einfachsten: Alles, was den Customer betrifft, findet sich an einer zentralen Stelle.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz