8721 sujets

Développement web côté serveur, CMS

Bonjour,
Question de débutant, mais je ne trouve pas l'info sur le web.
J'ai une base de donnée mysql innodb.
Par défaut, phpmyadmin mettait les valeur comme "NOT NULL". Il se trouve que pour certaines valeurs, il est possible que le champ soit vide, donc NULL. Il faut donc que j'autorise la valeur NULL.
Cependant un truc me tourmente.
Si phpmyadmin met l'option par défaut en NOT NULL, je suppose que c'est qu'il y a une (bonne) raison. Mais je ne sais pas laquelle... Smiley ohwell
Est-ce que si je mets tous les champs susceptibles de ne pas recevoir de valeur en "NULL" par défaut je risque de planter quelque chose? Smiley confus
Je pense qu'il les mettait en not null par défaut. Navicat (le programme que j'utilise pour le mysql) les met en NULL par défaut ^^
Modérateur
Salut,

Les joies de la modélisation....

Lothindil a écrit :
Je pense qu'il les mettait en not null par défaut. Navicat (le programme que j'utilise pour le mysql) les met en NULL par défaut ^^



Par défault, Mysql mettra null à la valeur d'un champ si ce n'est pas spécifié :


CREATE TABLE IF NOT EXISTS une_table_de_donnees(
    id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY,
    un_champ VARCHAR(128) NOT NULL,
    un_autre_champ VARCHAR(128),
    encore_un_champ VARCHAR(128) DEFAULT 'une valeur par défaut'
);


Null est une valeur ! C'est la raison pour laquelle lorsque l'on cherche les valeurs null ça s'écrit comme ceci :

SELECT
    *
FROM 
    une_table_de_donnees
WHERE
    ISNULL(un_autre_champ)


et non pas :

SELECT
    *
FROM 
    une_table_de_donnees
WHERE
    un_autre_champ = 'null'


Comment savoir si on doit mettre null ou pas ? Null est équivalant à indéfini. Ex :
Tu es en train de créer une base de données recensent des animaux en Amérique du sud. Admettons que tu dois insérer un nouvel animal dans la table. Les chercheurs ne savent pas grand chose sur cet animal. Par exemple la durée de gestation est inconnue. Le null peut être pertinent. Le null a été/est un gros sujet de discussion (doit on l'accorder dans une base de donnée ou pas - Edgar F Codd).
@niuxe
"Le null a été/est un gros sujet de discussion"
Tu m'étonnes que je ne trouve pas de réponse précise! Si la question est d'ordre aussi élevé que le sexe des anges, ou les avantages inconvénients de l'écriture bigendian ou littleendian, c'est pas moi, simple utilisateur débutant qui risque de trouver une réponse Smiley lol Smiley langue

Bon, au vu de trucs lus ici et là, je crois avoir trouvé un semblant de réponse:
Il semblerait qu'il faille à tout prix éviter "NULL" si la valeur peut servir de critère de recherche (ou alors vachement faire gaffe au code). Vu que le code considère que "champ vide", "NULL", et "champ rempli" sont trois choses différentes. En revanche si la valeur ne sert qu'à fournir une information, on peut utiliser sans trop de risque "NULL".

Je ne mets pas le sujet en résolu des fois que quelqu'un d'autre apportera des réponses plus... précises/ définitives, mais dans mon besoin précis, ça me suffit comme réponse... pour le moment! Smiley lol