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

Nejlepší způsob, jak uložit název kategorie z php do tabulky mysql

Záleží,

Kolik kategorií budete mít, jak často je budete muset aktualizovat?

Již dříve jsem použil přístup, kdy jsem přidal Enum, ale také napsal statickou metodu do třídy a uložil tam platná jména

class Item{


    public static function get_categories()
    {

        // only works in php >=5.4 otherwise use return array('Category1'...);
        return [
          'Category1' => 'Category1',
          'Category2' => 'Category2',
          'Category3' => 'Category3'
        ];
    }

}

Výše uvedeným způsobem můžete snadno získat přístup k poli pomocí Item::get_categories(), které by mělo odpovídat hodnotám v poli ENUM v databázi. Pokud potřebujete přidat další kategorie, přidejte je do databáze a poté do této funkce. Můžete to použít k ověření volby uživatele a vygenerování možností javascriptu.

Nicméně!!!!

Zmíníte-li se o zdroji, který zaplní vaši tabulku, nebude možné snadno aktualizovat váš ENUM.

Použil bych ENUM, protože

1). Je snadné nastavit2). Je to o něco jednodušší než spojit dva stoly (ale JOINS jsou eso, když se je naučíte)3). Pokud jste použili sekundární tabulku, museli byste (jak jste zdůraznili) nejprve vyhledat hodnotu z této tabulky a poté ji vložit, nebo pokud byla kategorie použita v rozevíracím seznamu, použijte k vyplnění rozevíracího seznamu ID kategorie a její název. (udělal bych to takto)

Závěrečná úvaha

Výkon obou způsobů (vyhledávací tabulka a ENUM) byste si ječmen dokonce všimnul rozdílu, pokud váš web není velmi zaneprázdněn. Stále byste museli aktualizovat tabulku kategorií s každou verzí oběma způsoby, ale bylo by o něco jednodušší POUŽÍT příkaz INSERT namísto ALTER TABLE

Ať už si vyberete jakýkoli způsob, pokud se vám to nelíbí, bylo by docela snadné kód aktualizovat.

Doufám, že to pomůže, a hodně štěstí

Pamatujte Keep It Simple Stupid K.I.S.S




  1. Aktualizace MySQL CASE WHEN/THEN/ELSE

  2. Funkce TAN() v Oracle

  3. Jak seskupit podle dvou sloupců v SQL

  4. codeigniter databáze přesouvá do jiné tabulky