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

Modelowanie baz danych:jak kategoryzować produkty takie jak Amazon?

Oczywiście będzie się skalować. To będzie działać dobrze, jest to powszechnie stosowana struktura.

Dołącz level_no . To pomoże w kodzie, ale co ważniejsze, wymagane jest wykluczenie duplikatów.

Jeśli chcesz mieć naprawdę ścisłą strukturę, potrzebujesz czegoś w rodzaju koncepcji i-węzłów uniksowej.

Możesz mieć trudności ze zrozumieniem kodu wymaganego do utworzenia hierarchii, powiedzmy z product , ale to osobny problem.

I proszę zmień

  • (product_category )) id do product_category_id
  • (product id do product_id
  • parent_id do parent_product_category_id

Odpowiedzi na komentarze

  1. level_no . Spójrz na ten model danych, jest to struktura drzewa katalogów (np. okno FlieManager Explorer):

    Model danych katalogowych

    Zobacz, czy możesz to zrozumieć, to jest koncepcja i-węzła uniksowego. Nazwy plików muszą być unikalne w obrębie węzła, stąd drugi indeks. To właściwie jest kompletne, ale niektórzy programiści w dzisiejszych czasach będą mieli problem z pisaniem kodu wymaganego do poruszania się po hierarchii, poziomach. Ci programiści potrzebują level_no aby określić, z jakim poziomem w hierarchii mają do czynienia.

  2. Zalecane zmiany. Tak, nazywa się to konwencjami dobrego nazewnictwa. Podchodzę do tego sztywno i publikuję, więc jest to standard nazewnictwa. Są ku temu powody, które staną się dla ciebie jasne, gdy napiszesz jakiś SQL z 3 lub 4 poziomami złączeń; zwłaszcza, gdy idziesz do tego samego rodzica na dwa różne sposoby. Jeśli wyszukasz SO, znajdziesz wiele pytań na ten temat; zawsze ta sama odpowiedź. Zostanie on również podświetlony w następnym modelu, który dla Ciebie napiszę.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobierz zmienną w pętli while na podstawie tego, co wybiera użytkownik?

  2. Ostrzeżenie:mysql_num_rows() oczekuje, że parametr 1 będzie zasobem, tablica podana w

  3. Wydajność MySQL:wiele tabel a indeks na jednej tabeli i partycjach

  4. Jakiego zbiorczego źródła danych należy użyć w przypadku Spring 3.1.0, Hibernate 4.0.1.Final i MySQL 5.1?

  5. Jak działa funkcja MID() w MySQL