sql >> Database teknologi >  >> RDS >> Mysql

Bedste måde at gemme et kategorinavn fra php i en mysql-tabel

Det afhænger,

Hvor mange kategorier vil du have, hvor ofte skal du opdatere dem?

Jeg har før taget den tilgang, hvor jeg tilføjede Enum, men også skrev en statisk metode i en klasse og gemte de gyldige navne der

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

}

Ved at gøre ovenstående kan du nemt få adgang til arrayet med Item::get_categories(), som skal svare til værdierne i ENUM-feltet i databasen. Hvis du har brug for at tilføje flere kategorier, skal du tilføje dem til databasen og derefter til denne funktion. Du kan bruge dette til at validere brugerens valg og generere javascript-indstillingerne.

Dog!!!!

Du nævner en seeding, der udfylder din tabel. Dette ville ikke være i stand til nemt at opdatere dit ENUM for dig.

Jeg ville bruge et ENUM, fordi

1). Det er nemt at konfigurere2). Det er lidt nemmere end at forbinde de to borde (men JOINS er et es, når du lærer dem)3). Hvis du brugte en sekundær tabel, skulle du (som du påpegede) først slå værdien op fra den tabel og derefter indsætte, eller hvis kategorien blev brugt i en rullemenu, skal du bruge kategori-id'et og dens navn til at udfylde rullemenuen (Jeg ville gøre det på denne måde)

Sidste tanke

Ydeevnen på begge måder (opslagstabel og ENUM) vil du endda bemærke forskellen, medmindre dit websted er meget meget travlt. Du skal stadig opdatere kategoritabellen med hver version begge veje, men det ville være lidt nemmere at BRUGE en INSERT-sætning i stedet for en ALTER TABLE

Uanset hvilken måde du vælger, hvis du ikke kan lide det, ville det være ret nemt at opdatere din kode.

Håber dette hjælper, og held og lykke

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




  1. Når autovakuum ikke støvsuger

  2. Opsæt stor database i MySQL til analyse i R

  3. Hvorfor kan jeg ikke bruge et alias i en DELETE-sætning?

  4. Vælg og rediger lodrette blokke i SQL Server Management Studio ( SSMS) - SQL Server / TSQL selvstudium del 9