Baumpaul 10 Geschrieben 24. Februar 2009 Melden Teilen 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 Link zu diesem Kommentar
Gulp 254 Geschrieben 24. Februar 2009 Melden Teilen 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 Link zu diesem Kommentar
Baumpaul 10 Geschrieben 24. Februar 2009 Autor Melden Teilen 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 Link zu diesem Kommentar
Gabriel70 10 Geschrieben 24. Februar 2009 Melden Teilen 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 Link zu diesem Kommentar
Baumpaul 10 Geschrieben 24. Februar 2009 Autor Melden Teilen 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 Link zu diesem Kommentar
phoenixcp 10 Geschrieben 24. Februar 2009 Melden Teilen 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 Link zu diesem Kommentar
Gulp 254 Geschrieben 24. Februar 2009 Melden Teilen 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 Link zu diesem Kommentar
phoenixcp 10 Geschrieben 24. Februar 2009 Melden Teilen 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 Link zu diesem Kommentar
Gulp 254 Geschrieben 24. Februar 2009 Melden Teilen 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 Link zu diesem Kommentar
Gabriel70 10 Geschrieben 24. Februar 2009 Melden Teilen 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 Link zu diesem Kommentar
Baumpaul 10 Geschrieben 24. Februar 2009 Autor Melden Teilen Geschrieben 24. Februar 2009 @phoenixcp: Diesen varchar-Wert könnte ich aber nach Belieben verändern, oder?? Zitieren Link zu diesem Kommentar
phoenixcp 10 Geschrieben 24. Februar 2009 Melden Teilen 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 Link zu diesem Kommentar
Gabriel70 10 Geschrieben 24. Februar 2009 Melden Teilen 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 Link zu diesem Kommentar
Baumpaul 10 Geschrieben 24. Februar 2009 Autor Melden Teilen 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 Link zu diesem Kommentar
phoenixcp 10 Geschrieben 24. Februar 2009 Melden Teilen 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 Link zu diesem Kommentar
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.