Biginteger, Integer, Nullable unterschied?

david19

Well-Known Member
#1
Ich habe den Unterschied nicht ganz verstanden. Egal welches ich mit Lavarel verwende, es funktioniert beides.

1. Was ist der Unterschied zwischen „Integer“ und „Biginteger“?

2. Was bedeutet genau „nullable“?

Es wäre schön wenn ihr mir ein praxisbeispiel erklären könntet, warum und weshalb diese einsetzt. :)
 

dominikb

Well-Known Member
c-b Experte
#2
Der Grund weshalb beides funktioniert ist, dass deine Zahl noch in einen normalen Integer "passt".

Was ist der Unterschied zwischen „Integer“ und „Biginteger“?

Ein Integer wird üblicherweise durch 32 Bits dargestellt, er braucht also 4 Byte Speicher. Du kannst also nicht jede beliebige Zahl als Integer speichern, weil dir irgendwann der Speicherplatz ausgeht. Die größte Zahl, die du speichern kannst, ist 2.147.483.647.

Für alle Zahlen darüber brauchst du entweder einen Unsigned Integer (hier werden nur positive Zahlen gespeichert, beim normalen Integer sind auch negative Zahlen möglich, was dir natürlich Platz im positiven Bereich kostet) oder du nimmst einfach einen Datentyp, der mehr Speicher bietet - das wäre dann ein BigInteger. Der bietet typischerweise 128 Bit, um deine Zahl zu speichern und erlaubt deutlich größere Zahlen.

Solange du also unter 2.147.483.647 bleibst, wird sich nichts ändern, außer dass du mit dem BigInteger mehr Speicher verbrauchst. Solltest du aber über die maximale Kapazität eines Integers kommen, macht der verwendete Datentyp für dich einen Unterschied.
 

david19

Well-Known Member
#4
Hey Dominik. Tausend dank jetzt habr ich es verstanden mit dem Integer:)
Ja genau, es geht um SQL Datenbank.

Könntest du mir ein Beispiel nennen, wann „NULL“ sinn macht?

Ich habe einen Nestedtree gebaut für Produkte mit Kategorien. Ich kann bei allen mein Columns „Nullable“ machen oder nicht, es funktioniert beides.
 

dominikb

Well-Known Member
c-b Experte
#5
Könntest du mir ein Beispiel nennen, wann „NULL“ sinn macht?
Wenn eine Angabe optional ist. Wenn du z. B. alle Produkte von Aldi in einer Tabelle speichern möchtest, wäre das Mindesthalbkarkeitsdatum nullable, weil Aldi nicht nur Lebensmittel, sondern auch Kleidung und andere Artikel verkauft. Die Spalte für das MHD wäre dann für diese Artikel auf NULL gesetzt.

Wenn du alle Spalten mit Werten befüllst, ist es aus technischer Sicht egal, ob die Tabellenspalten nullable sind oder nicht. Aber: Wenn eine dieser Spalten keinen Wert bekommt (also NULL reingeschrieben wird), muss die entsprechende Spalte nullable sein. Ansonsten kannst du gar kein NULL reinschreiben.
 

david19

Well-Known Member
#6
Ein sehr gutes Beispiel:) Der Wert kann also auch leer sein.
Kurz gesagt alle Felder die auch leer sein dürfen, bekommen „nullable“.
Bedeutet „null“ die Zahl „0“ übersetzt?
 

dominikb

Well-Known Member
c-b Experte
#7
Kurz gesagt alle Felder die auch leer sein dürfen, bekommen „nullable“.
Bedeutet „null“ die Zahl „0“ übersetzt?
Genau, nur dass NULL nicht das Gleiche wie "" (leerer String) oder 0 ist. Denn auch 0 ist ein numerischer Wert. NULL ist mehr oder weniger ein Symbol dafür, dass kein Wert (auch nicht 0) gesetzt ist.
 

david19

Well-Known Member
#8
Oh man geil, jetzt hab ich es:D Vielen Dank.
Es macht mir so langsam richtig spaß. Es ist einfach ein schönes Gefühl wenn man ein CMS so bauen kann, wie man es möchte. Dieses Gefühl einen Button zu erstellen, welcher eine Funktion auslöst. Unbeschreiblich:D
 
Oben