Baumpaul 10 Geschrieben 24. Februar 2009 Melden Geschrieben 24. Februar 2009 Hallo, ich muss gleich sagen, ich habe nicht viel Plan von Datenbanken. Mein Problem besteht darin, dass ich eine bestehende Datenbank habe, unter anderem mit dem Feld "IMEI". Meiner Meinung nach müsste das Feld so definiert sein, dass keiner der Einträge dem anderen gleichen darf, gibt ja keine identischen IMEI-Nummern. Aber wenn ich nun das Feld komplett leer lasse, meckert mich die Software an, von wegen: IMEI wurde schon vergeben bei "". Wie kann ich das Feld definieren, dass keine Einträge gleich sein können, aber das Feld leer bleiben kann?? Bitte um Hilfe, danke! Zitieren
Gulp 274 Geschrieben 24. Februar 2009 Melden Geschrieben 24. Februar 2009 Das dürfte ein Problem werden, wenn die Spalte eindeutige Werte enthalten soll. Jedes leere Feld bekommt den Wert NULL (nein nicht 0) und wenn hier eine Eindeutigkeit gewünscht ist, dann muss auch ein eindeutiger Wert verwendet werden, NULL oder ein leeres Feld ist aber nicht eindeutig. Grüsse Gulp Zitieren
Baumpaul 10 Geschrieben 24. Februar 2009 Autor Melden Geschrieben 24. Februar 2009 Danke erstmal. das heisst, ich müsste mich absolut auf meine Einträge verlassen und das Feld so ändern, dass es NULL oder leer zulässt? Ich mache alle Einträge selbst, von daher müsste ich eben nur aufpassen, keine IMEI doppelt zu vergeben, sehe ich das richtig? Zitieren
Gabriel70 10 Geschrieben 24. Februar 2009 Melden Geschrieben 24. Februar 2009 das heisst, ich müsste mich absolut auf meine Einträge verlassen und das Feld so ändern, dass es NULL oder leer zulässt? Ja. Ich mache alle Einträge selbst, von daher müsste ich eben nur aufpassen, keine IMEI doppelt zu vergeben, sehe ich das richtig? Ist natürlich gefahrenbehaftet. Warum kannst du keinen Autowert verwenden? Zitieren
Baumpaul 10 Geschrieben 24. Februar 2009 Autor Melden Geschrieben 24. Februar 2009 Wie gesagt, ich bin nicht so bewandert mit Datenbanken. Was wäre denn der Autowert, wie ist der definiert, oder wie sollte der definiert werden?? Zitieren
phoenixcp 10 Geschrieben 24. Februar 2009 Melden Geschrieben 24. Februar 2009 Naja, wenn wir uns die Bedeutung der IMEI zu Gemüte führen, wird klar, das er keinen Autowert verwenden kann ;) Zitieren
Gulp 274 Geschrieben 24. Februar 2009 Melden Geschrieben 24. Februar 2009 So ungefähr, entweder Du setzt auf die Spalte beispielsweise einen Primary Key, der eindeutig ist und nicht NULL enthalten darf (damit stellst Du dann sicher, dass in dieser Spalte ein eindeutiger Wert verwendet werden muss) oder Du verwendest zB einen Unique Key, der darf dann NULL enthalten, muss aber dennoch eindeutig sein. Unique key - Wikipedia, the free encyclopedia Setzt Du weder einen Primary noch einen Unique Key, so kann jeder Wert (je nach Spaltendefinition) gültig sein und doppelt vorkommen, das müsstest Du seitens der eintragenden Anwendung dann zB mit einer Duplikatprüfung per vorangestelltem Select Statement steuern. Grüsse Gulp Zitieren
phoenixcp 10 Geschrieben 24. Februar 2009 Melden Geschrieben 24. Februar 2009 Aber wenn ich nun das Feld komplett leer lasse, meckert mich die Software an, von wegen: IMEI wurde schon vergeben bei "". Was mich grade noch stutzig macht: Welche Software meckert? Die Datenbank oder eine Applikation, welche auf der Datenbank aufsetzt? entweder Du setzt auf die Spalte beispielsweise einen Primary Key Da stellen sich den Datenbankern die Nackenhaare auf ;) Man sollte nie ein Datenfeld zu einem PK machen. Ich verwende für soetwas immer ein varchar(38)-Feld, welche über die Funktion NewID() befüllt wird. Dabei erhält mal einen 38-stelligen Wert, den das DBMS zufällig ausrechnet. Mir ist dabei noch keine Dopplung untergekommen. Ein Beispiel (grade frisch erzeugt): D727AC2E-F0E7-482F-9667-9410B0AC75DF[/Code] Zitieren
Gulp 274 Geschrieben 24. Februar 2009 Melden Geschrieben 24. Februar 2009 Ich hab ja auch nicht gesagt, dass das setzen eines Primary Keys auf ein Datenfeld besonders schön sei ..... ;) Grüsse Gulp Zitieren
Gabriel70 10 Geschrieben 24. Februar 2009 Melden Geschrieben 24. Februar 2009 Naja, wenn wir uns die Bedeutung der IMEI zu Gemüte führen, wird klar, das er keinen Autowert verwenden kann ;) Stimmt :p Hatte ich übersehen. Dann geht es natürlich nicht. Zitieren
Baumpaul 10 Geschrieben 24. Februar 2009 Autor Melden Geschrieben 24. Februar 2009 @phoenixcp: Diesen varchar-Wert könnte ich aber nach Belieben verändern, oder?? Zitieren
phoenixcp 10 Geschrieben 24. Februar 2009 Melden Geschrieben 24. Februar 2009 Können könnte man, aber was sollte das bringen? Es handelt sich hierbei dann um einen Primärschlüssel eines Datensatzes. Also auf gut deutsch sowas wie die "einzigartige Adresse" des Datensatzes. Wozu sollte man die ändern? Wenn überhaupt werden die anderen Attribute (Spalten) des Datensatzes geändert. Zitieren
Gabriel70 10 Geschrieben 24. Februar 2009 Melden Geschrieben 24. Februar 2009 Wie gesagt, ich bin nicht so bewandert mit Datenbanken. Dann schau dir das mal an - etwas Grundlagen-Forschung. ;) Onlinedokumentation Auf jeden Fall würde ich die Definition so vornehmen, daß NOT NULL gegeben ist. Gruß Zitieren
Baumpaul 10 Geschrieben 24. Februar 2009 Autor Melden Geschrieben 24. Februar 2009 @phoenixcp: Ich muss ja bei manchen Geräten die IMEI angeben, nur viele arbeiten auch ohne sie. Deswegen habe ich da auch viele leere Felder. Geräte die nicht mit der IMEI arbeiten, können aber einen beliebigen Eintrag haben. Zitieren
phoenixcp 10 Geschrieben 24. Februar 2009 Melden Geschrieben 24. Februar 2009 Und genau deshalb ist NOT NULL genau die falsche Definition für dieses Feld. DU hast dich aber immer noch nicht zu meiner Frage geäussert: Was mich grade noch stutzig macht: Welche Software meckert? Die Datenbank oder eine Applikation, welche auf der Datenbank aufsetzt? Davon hängt auch ein wenig ab, ob wir da seitens der Datenbank überhaupt noch was machen können ;) Zitieren
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.