Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Najlepszy sposób na przechowywanie nazwy kategorii z php w tabeli mysql

To zależy,

Ile będziesz mieć kategorii, jak często będziesz musiał je aktualizować?

Zrobiłem to wcześniej, kiedy dodałem Enum, ale napisałem też statyczną metodę w klasie i zapisałem tam prawidłowe nazwy

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

}

Wykonując powyższe czynności możesz łatwo uzyskać dostęp do tablicy poprzez Item::get_categories(), która powinna odpowiadać wartościom w polu ENUM w bazie danych. Jeśli potrzebujesz dodać więcej kategorii, dodaj je do bazy danych, a następnie do tej funkcji. Możesz użyć tego, aby zweryfikować wybór użytkownika i wygenerować opcje javascript.

Jednak!!!!

Wspominasz rozstawienie, które zapełnia twoją tabelę, nie byłoby to w stanie łatwo zaktualizować twojego ENUM.

Użyłbym ENUM, ponieważ

1). Konfiguracja jest łatwa2). To trochę łatwiejsze niż dołączenie do dwóch stołów (ale JOINS to as, gdy się ich nauczysz)3). Jeśli używasz tabeli dodatkowej, musisz (jak wspomniałeś) najpierw wyszukać wartość z tej tabeli, a następnie wstawić, lub jeśli kategoria została użyta w menu rozwijanym, użyj identyfikatora kategorii i jej nazwy, aby wypełnić listę (zrobiłbym to w ten sposób)

Końcowa myśl

Wydajność obu sposobów (tabela przeglądowa i ENUM) pozwoliłaby nawet zauważyć różnicę, chyba że witryna jest bardzo zajęta. Nadal musiałbyś aktualizować tabelę kategorii za pomocą każdej wersji w obie strony, ale nieco łatwiej byłoby UŻYĆ instrukcji INSERT zamiast ALTER TABLE

Niezależnie od wybranego sposobu, jeśli ci się nie podoba, aktualizacja kodu będzie dość łatwa.

Mam nadzieję, że to pomoże i powodzenia

Pamiętaj Keep It Simple Stupid K.I.S.S




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie MySQL oszalał?

  2. Jak dodawać adnotacje do pola autoinkrementacji MYSQL za pomocą adnotacji JPA?

  3. skrypt MYSQL do konwersji nazw kolumn na małe litery

  4. Różnica między SELECT INTO i INSERT INTO w MySQL

  5. MySQL pomiń pierwsze 10 wyników