sql >> Databasteknik >  >> RDS >> Mysql

Bästa sättet att lagra ett kategorinamn från php i en mysql-tabell

Det beror på,

Hur många kategorier kommer du att ha, hur ofta behöver du uppdatera dem?

Jag har använt tillvägagångssättet förut där jag lade till Enum, men även skrev en statisk metod i en klass och lagrade de giltiga namnen där

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'
        ];
    }

}

Genom att göra ovanstående kan du enkelt få tillgång till arrayen med Item::get_categories(), som ska motsvara värdena i ENUM-fältet i databasen. Om du behöver lägga till fler kategorier, lägg till dem i databasen och sedan till den här funktionen. Du kan använda detta för att validera användarens val och generera javascript-alternativen.

Dock!!!!

Du nämner en seding som fyller din tabell, detta skulle inte enkelt kunna uppdatera din ENUM åt dig.

Jag skulle använda ett ENUM, eftersom

1). Det är lätt att ställa in2). Det är lite lättare än att gå med i de två borden (men JOINS är ess när du lär dig dem)3). Om du använde en sekundär tabell måste du (som du påpekade) först slå upp värdet från den tabellen och sedan infoga, eller om kategorin användes i en rullgardinsmeny, använd kategori-id och dess namn för att fylla i rullgardinsmenyn (jag skulle göra så här)

Sista tanke

Prestanda på båda sätten (uppslagstabell och ENUM) du skulle korn till och med märka skillnaden om inte din webbplats är väldigt mycket upptagen. Du måste fortfarande uppdatera kategoritabellen med varje version åt båda hållen, men det skulle vara något lättare att ANVÄNDA en INSERT-sats istället för en ALTER TABLE

Oavsett vilket sätt du väljer, om du inte gillar det, skulle det vara ganska enkelt att uppdatera din kod.

Hoppas detta hjälper och lycka till

Kom ihåg Keep It Simple Stupid K.I.S.S




  1. Dominoernas hemligheter, eller en dominospeldatamodell

  2. PostgreSql 'PDOException' med meddelandet 'kunde inte hitta drivrutinen'

  3. Ska jag ange både INDEX och UNIKT INDEX?

  4. När eller varför ska man använda en SET DEFINE OFF i Oracle Database