AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [SQL] problematische NULL-Wete
Thema durchsuchen
Ansicht
Themen-Optionen

[SQL] problematische NULL-Wete

Ein Thema von Hansa · begonnen am 29. Jun 2004 · letzter Beitrag vom 1. Jul 2004
Antwort Antwort
Robert_G
(Gast)

n/a Beiträge
 
#1

Re: [SQL] problematische NULL-Wete

  Alt 30. Jun 2004, 08:21
Zitat von Hansa:
Oder ist das doch nicht so gut
Jupp, das ist nicht so gut.

Stelle dir vor, du hast zwei Foreign Keys von Tabelle A auf Tabelle B & C, sagen wir A_B und A_C.
Wenn du zwar in A einen DS hast, der B referenziert, aber NICHT C, könntest du ganz einfach das Feld A_C leer lassen. Bei einer 0 wird er dir auf's Dach steigen, da du in C wohl keine 0 als PK hast.

Das NULL-Problem lässt sich oftmals ganz esay über die Funktion nvl lösen.
Ist der erste Parameter NULL, wird der zweite ausgegeben.
SQL-Code:
SELECT A.IrgendWas
      ,B.IrgendWas
      ,C.IrgendWas
FROM A, B, C
WHERE nvl(A.A_B, -1) = B.PK(+) AND
      nvl(A.A_C, -1) = C.PK(+)
Aber Vorsicht: Bei manchen DBs versagt die Indexierung, wenn man über das Ergebnis einer Funktion verknüpft.

Wenn du aber _weißt_ (nicht glaubst ), dass die FKs nie leer sind, würde ich eine NOT NULL Constaraint an die Spalte hängen.
Dieses "Default 0" halte ich persönlich für Unsinn. Bei Feldern, die keine anderen Tabellen referenzieren, oder die keine "wichtigen" Daten enthalten (zum Bleistift der Vor- & Zuname in einer Kontakttabelle sollten auch NOT NULL sein) können doch auch leere Werte rein. (Die wirst du wohl auch nicht benutzen, um Tabellen in einer Abfrage zu verknüpfen, dafür hast du ja die Schlüssel).


Zitat von nieurig:
bei richtig dynamischer Verwaltung der Daten dürfte der Speicherverbrauch etwas geringer sein (wenn es denn interssiert )
Sorry, aber ich kapiere da den Zusammenhang zu Hansas Problemchen nicht.
  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 19:23 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