Re: Glossar(Stammdaten)

  • From: Michael Gruetzner <Michael_Gruetzner@xxxxxx>
  • To: idefix@xxxxxxxxxxxxx
  • Date: Tue, 17 Jun 2003 18:59:32 +0200

Yevgen Reznichenko wrote:

Hallo,

Am 06/17/2003 04:38 PM schrieb Roland Kruggel:

Sollen alle Stammdaten eine eindeutige ID haben?


Zur Definition.
Eine ID ist eine eindeutige Kennzeichnung eines Datensatzes.


Diese Definition passt mahr an einen Primarykey einer Tabelle, aber
ID != Primarykey, obwohl sie meistens als solche genommen wird, aber
...


D.h. _Jede_ Tabelle bekommt eine ID. Diese ID wird von der Datenban
eindeutig und selbstständig erzeugt und gespeichert.


Jede Tabelle muss ein Primarykey (deut. Primärschlüssel) besitzen,
aber nicht ID. Nehmen wir uns dein Beispiel mit Zuordnung von
Adressen vor, du wolltest in einer Extratabelle die Kunden-ID und die
entsprechende Adresse-ID ablegen. Was ist dann die eindeutige ID die
automatisch erzeugt wird? In solchen Fällen erzeugt man keine
extra-ID man legt einfach Kunden-ID zusammen mit Adressen-ID als
Primarykey fest und das ist alles.



Reden wir hier wirklich von dem selben?
Die ID ist keine Adress-, Kunden- etc Nummer. Die ID tritt nicht ach aussen zum Anwender. Sie diehnt nur der Internen Verwaltung der Tabellen und der Eindeutigen Verweise untereinander.


Du brauchst wirklich nicht in jeder Tabelle einen ID. Das ist richtig. Aber: Da due dich nicht um die ID in der Tabelle kümmern mußt, das macht MySQL alleine, und da die ID immer eine eindeutige Nummer ist,


Kundennummer und Lieferantennummer sind auch eindeutig und aus diesem Grund ausreichend. Es gibt natürlich Fälle in denen es sinnvoll ist eine eindeutige ID einzuführen, aber das ist kein Regelfall. So eine ID wird z.B. die Adressnummer, da diese weder im Program noch vom Benutzer benötigt wird und dient nur der Vereinfachung des Primarykeys. Allerdings Kundennummer und Lieferantennummer sind nicht solche, da diese auch von Benutzern benötigt werden und sind eindeutig, so reicht es aus Kundennummer als Primarykey festzulegen, dann braucht man keine weitere *unnötige* Kennzahlen.

Der primary key sollter immer Integer sein, damit die DB ihm mittels autoincrement selbst vergeben kann. Da die Kundennummer alphanumerisch ist(oder sein kann), fällt diese als Primarykey weg.

ist es für spätere Erweiterungen bei Tabellenverknüpfungen immer von Vorteil diese ID zu haben.
Ich plädiere also darauf: in _JEDER_ Tabelle eine ID zu halten.


Wie gesagt nicht jede Tabelle benötigt diese von dir gemeinte ID. Die Tabelle "Kundennummer | Adress-ID" benötigt diese nicht und auch Tabellen "Kunde" und "Lieferant" benötigen diese auch nicht. Die ID soll nur in solche Tabellen aufgenommen werden in denen sie wirklich gebraucht wird z.B. "Adresse".

Es sollte wirklich JEDE Tabelle eine numerische Id als primary key haben. Das erleichtert die Verknüpfung der Tabellen ungemein. Selbst wenn diese Nummer nicht benötigt wird, ist sie doch nur minimaler Overhead und sollte deshalb IMMER vorhanden sein.

Michael
cu


Yevgen.



--
printk("CPU[%d]: Sending penguins to jail...",smp_processor_id());
        2.4.8 arch/sparc64/kernel/smp.c

--
Projekt: Warenwirtschaft. Projektname: Jana
Infos: http://jana.bbf7.de

--------------------------------------------------------------------
Zum AUSTRAGEN schicken Sie eine Mail an idefix-request@xxxxxxxxxxxxx
mit dem Subject "unsubscribe". 
mailto:idefix-request@xxxxxxxxxxxxx?subject=unsubscribe

Mailarchive: //www.freelists.org/archives/idefix
Probleme? Mail an mailto:rkruggel@xxxxxxx (deutsch)

Other related posts: