Tipps für den Datenbankentwurf auf Unternehmensebene

8

Ich arbeite mit einer Unternehmensanwendung und habe einige Tipps für das DB-Design

erhalten
  1. Alle Tabellen sollten die folgenden Felder enthalten, die den Audit-Trail unterstützen: LastChangedBy , LastChanged , LastChangedPage
  2. Alle gespeicherten Prozeduren mit dynamischem SQL sollten den Parameter @ bDebug haben. Standardmäßig ist es auf 0 gesetzt. Wenn es auf 1 gesetzt ist, drucken Sie die dynamische SQL-Anweisung aus, und das wird beim Debuggen sehr hilfreich sein.
  3. Bei CRUD SPs können Sie die Tabelle teilweise aktualisieren. Wenn Ihre Tabelle 10 Felder hat und Sie in einem der SP nur 5 Felder aktualisieren möchten, müssen Sie eine Abstraktionsebene haben.

Irgendwelche anderen nützlichen Tipps, die Sie sich vorstellen können?

EDIT: Danke für alle Antworten. Ich bin immer noch auf der Suche nach einer Antwort, die einen Link zu Tipps / Tricks / Strategien für DB Design geben kann.

    
Nick 11.07.2009, 16:39
quelle

6 Antworten

4

Für # 1: Wechseln Sie zu SQL Server 2008 und aktivieren Sie nur Datenerfassung ändern. Wenn Sie wirklich detaillierte Audit-Trails benötigen, wird diese Funktion allein die Kosten rechtfertigen.

Für # 2: Jede gespeicherte Prozedur mit dynamischem sql sollte automatisch auf eine doppelte geheime Probezeit gesetzt werden (dh: es ist erlaubt, muss aber mehrere Stufen der Code-Überprüfung durchlaufen, um sicherzustellen, dass es keinen besseren Weg gibt, dies zu tun).

    
Joel Coehoorn 11.07.2009 16:50
quelle
1

Wenn es um die Macht des Internets geht, ist es besser, nichts zu löschen. Daher können Sie mit einem deletedOn-Datum nur solche Objekte ausschließen, die von Ihren Suchen "gelöscht" wurden. Dies hilft auch verzweifelten Kunden, die versehentlich ihren Account gelöscht haben. Offensichtlich sollte dies nicht in jedem Bereich verwendet werden.

    
RyanJM 11.07.2009 17:37
quelle
1

LastChangedBy usw. Felder sind ziemlich nutzlos. Wenn Sie wirklich einen Audit-Trail benötigen, benötigen Sie separate Audit-Tabellen, die die Änderungen detailliert darstellen und ein Audit-Protokoll führen. Wenn Sie keinen Audit-Trail benötigen, werden die Felder "LastChangedBy" und "LastChangedBy" nur hinzugefügt, um einen Geschäftswert zu vermeiden.

    
anon 12.07.2009 09:20
quelle
1

Ein paar Gedanken, die einem sofort in den Sinn kommen, wenn man mit einer sehr großen Datenbank (VLDB) arbeitet:

Soll die Tabellenpartitionierung implementiert werden?

Große Datenbanktabellen mit Millionen von Datensätzen können von der Tabellenpartitionierung profitieren.

  • Die Verfügbarkeit dieses SQL Server Feature ist beschränkt auf die Verwendung der Enterprise Edition.
  • Die Anwendbarkeit ist abhängig von Ihre Plattform-Hardware und die Verfügbarkeit eines geeigneten Partitionierungsschlüssel innerhalb der Tabellendaten.

Was sind meine am häufigsten verwendeten Tabellen?

Ziehen Sie die Trennung nach Dateigruppe in Betracht, d. h. legen Sie die Tabelle Customer auf einer Dateigruppe und die Tabelle Transaktion auf einer anderen. Dadurch kann SQL Server mehrere Threads für den Dateizugriff erstellen, wodurch die Möglichkeit für sequenzielle E / A geschaffen wird.

Betrachten Sie anschließend die zugrundeliegende physische Festplattenstruktur, d. h. eine separate LUN für jede Dateigruppe.

Entwickeln Sie eine flexible Indexierungsstrategie

Sie werden zweifellos bereits eine Indexierungsstrategie im Auge haben, aber für VLDB-Plattformen sollte dies häufig überprüft werden. Wenn sich das Datenvolumen erhöht und sich die Datenverteilung ändert, können die Ausführungspläne für Ihren Datenzugriff Abfragen ausführen. Sie sollten planen, Ihre Indexierungsstrategie regelmäßig zu überprüfen.

    
John Sansom 12.07.2009 09:15
quelle
0

Meiner Meinung nach würde man CreatedBy und Created Felder benötigen.

    
rafek 11.07.2009 16:44
quelle
0

Daten sollten im Utc-Format gespeichert und am Client in lokale Zeit konvertiert werden.

    
jsr 11.09.2009 20:56
quelle

Tags und Links