Avatar billede compac Seniormester
06. januar 2021 - 17:17 Der er 3 kommentarer og
1 løsning

Standardværdi i DB-felter

Når man indsætter data i en database er det nødvendigt at definere alle felterne i transaktionen.
if (isset($_POST['submit'])) {
        $nam = $_POST['name'];
        $mail = $_POST['email'];
      if (!isset($_POST['phone'])){
          $tlf = '';
      }
        $sql = mysqli_prepare($link,"INSERT INTO users(name, email, phone) VALUES (?,?,?)") or die(mysqli_error($link)); 
$sql->bind_param("ssi", $nam,$mail, $tlf);
       
Det vil være fristende at oprette en standardvædi for felterne i databasen, så definisionen af de felter, der ikke bliver anvendt i den pågældende transaktion, kan undværes.
Kan det tilrådes? - og hvis nej hvorfor ikke.
Avatar billede arne_v Ekspert
06. januar 2021 - 19:27 #1
Det er jo et spørgsmål hvor der ikke er et klart facit.

Men jeg kan prøve og komme med et par betragtninger.

Det er ofte relevant med default values for ihvertfald nogen felter.

Omend jeg vil tro at NULL er noget hyppigere brugt end default values.

Husk at der er forskel på NULL og 0/'' (med 1 2 0 er COUNT 3 og AVG 1, mens med 1 2 NULL er COUNT 2 og ACG er 1.5).

Så man skal tænke grundigt over om man ønsker NULL eller 0/'' eller reel default value som f.eks. 'Standard'.

Default values kan enten være i databasen eller i applikationen.

Hvis ens database bruges af forskellige applikationer - og måske er disse applikationer endda i forskellige programmerings sprog - så er der fordele ved at have default værdier i databasen, da alle applikationer så deler disse.

Men hvis der kun er en applikation som bruger databasen, så er der en praktisk fordel ved at have de default values i applikationen - koden bliver simplere.
Avatar billede arne_v Ekspert
06. januar 2021 - 19:28 #2
ACG -> AVG
Avatar billede madslundholm Novice
12. januar 2021 - 11:09 #3
Det giver mindre kompleksitet i koden, hvis du benytter dig af standardværdier, da det giver mindre kode, da du ikke skal kontrollere om data'en er til rådighed.

Derudover bliver det også mere skalerbart, for hvis du tilføjer et felt senere hen, da du så ikke skal du så vedligeholde alle steder du indsætter data.

Du skal selvfølgelig tænke over hvad din standardværdi skal være, som Arne har skrevet.
Jeg vil anbefale at bruge NULL, da du så programmerisk kan styre hvad den værdi er, men det kommer meget an på hvert scenarie.
Avatar billede compac Seniormester
12. januar 2021 - 21:15 #4
Jeg har et felt i databasen som ikke bliver brugt mere. Der var oprindelig henvisning til en mappe med billeder. I de ældste poster er der stadigvæk data, men jeg har  nu sat den til default 0. (burde måske være NULL)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester