sql >> Databáze >  >> RDS >> Mysql

Měl bych použít NULL nebo prázdný řetězec k reprezentaci žádných dat ve sloupci tabulky?

Silně nesouhlasím s každým, kdo říká bezpodmínečně používat NULL. Povolení, aby sloupec měl hodnotu NULL, zavádí další stav, který byste neměli, pokud byste sloupec nastavili jako NOT NULL. Nedělejte to, pokud další stav nepotřebujete. To znamená, že pokud nemůžete přijít na rozdíl mezi významem prázdného řetězce a významem null, nastavte sloupec jako NOT NULL a použijte prázdný řetězec k reprezentaci prázdného. Reprezentovat stejnou věc dvěma různými způsoby je špatný nápad.

Většina lidí, kteří vám řekli, abyste používali NULL, také uvedla příklad, kde by NULL znamenalo něco jiného než prázdný řetězec. A v těchto příkladech mají pravdu.

Většinu času je však NULL zbytečným stavem navíc, který jen nutí programátory, aby museli řešit více případů. Jak již uvedli jiní, Oracle nepovoluje existenci tohoto zvláštního stavu, protože považuje hodnotu NULL a prázdný řetězec za stejnou věc (není možné uložit prázdný řetězec do sloupce, který v Oracle neumožňuje hodnotu null).



  1. Zálohování a obnovení databáze s podporou FILESTREAM

  2. Vložení hodnoty zakódované do JSON se speciálními znaky do mySQL se nezdaří

  3. podporuje adaptér rails postgres ssl?

  4. Převeďte časové razítko na datum v Oracle SQL