Vyber podobneho produktu podla ID rubrika: Databáze: SQL

5 mario2402
položil/-a 13.12.2018

Caute,

ako by ste co najefektivnejsie ulozili a vyberali do/z MySQL id kluce podobnych produktov (v novej tabulke)?

Mam dajme tomu produkty s ID 1,2,3,4,5

A 1,2,3 su si medzi sebou podobne. Ako by som vybral na zaklade jedneho z nich (zakaznik ma zobrazeny produkt napr.2) a chcem mu ukazat aj ostatne (1,3). Ale ma vybrany napr. 1 , tak mu ukazem 2,3.

Ako by ste to vyriesili Vy? Zatial tak trochu tapam ako to vyriesit.

DIK chlapi

odkaz Vyřešeno
10 rmaslo
odpověděl/-a 15.12.2018
 
upravil/-a 15.12.2018

Musíš si (zákazníkovi) položit tyto základní otázky:

  1. Je podobnost vždy symetrická? Tj. platí-li že je-li A podobné B lze z toho automaticky přeplokládát, že B je podobné A?
  2. Je-li A podobné B a zároveň A podobné C, vyplývá z toho, že B je podobné C?

A. Pokud by tyto obě tvrzení platily tak z toho logicky vyplývá, že každý produkt může nýt jen v jedné podobnostní skupině a opravdu stačí do základní tabulky přidat sloupec similar. Nicméně pozor pak nemůžeš mít produkt ve dvou různých skupinách (např. produkty zelené a produkty kulaté) protože to odporuje tomu tvrzení 2.

B. Pokud Souhlasíš s tvrzením 1 a s tvrzením 2 ne, tak je potřeba udělat tabulku kde bude id_produktu a id_grupy, případně ještě tabulku hlaviček grup, kde bude id_grupy a její název (zelená, kulatá)

C. Pokud nesouhlasíš ani s 1. (třeba ve smyslu k produktu rádio je potřeba nabízet baterky, ale k baterkám se rádio nenabízí) tak je ideální založit tabulku se sloupci id_zakladni, id_svazane. Pokud pak do takovéto tabulky potřebuješ zapsat A a B jsou podobné tak to jsou dva záznamy: A je podobné B a B je podobné A

Nejčastěji se setkávám s variantou C. Nicméně občas jsou i varianty A (např. 3x zadaný produkt kvůli ceně a záruce - normální, rozbalený, bazarový). Tam je potřeba popřemýšlet jestli je správně navržena tabulka produktů a jestli by třeba ty tři ceny neměly být spíš 3 sloupce v produktu.

Komentáře

  • Kit : Tři sloupce v produktu asi ne, spíš bych to viděl na tři záznamy v další tabulce jako varianty. Může jich pak být 0 (nedostupné) nebo třeba 4 (s dalším atributem). K tomu popisek a stav skladu. 15.12.2018
  • mario2402 : V tomto pripade sa jedna o A, teda suhlasim s tvrdenim 1 aj 2. Podobnost je symetricka, medzi kazdym clenom skupiny, dovodom je co najjednoduchsie grupovanie podobnych tovarov (napr. vlozim nove analogovo digitalne hodinky, pridam ich to tejto skupiny - jednym pridanim budu dostupne pre celu skupinu). Jedna sa o rozdelenie produktov na urcite skupiny, kde kazdy produkt musi byt iba v jednej skupine (viac skupin by marilo jednoduchost riesenia - ktora skupina by sa potom mala zobrazovat?). Vyuzitie je v podstate len v pripade, ked produkt je vypredany, resp. nie je na sklade. VYRIESENE pomocou similar stlpcu v tabulke tovarov, bezi to bezvadne, tak ako som si to predstavoval. 15.12.2018
  • rmaslo : @Kit: Jo v principu souhlas. Samozřejmě to záleží na zadání, kdyby bylo jasné, že rozbalování produktů je jejich obchodní strategie (takže ta rozbalená a bazarová cena bude skoro všude) a že fakt nehrozí nějaká čtvrtá, tak bych to možná udělal na pevno, ale většinou tohle zákazník na roky dopředu neví takže by to asi dopadlo jak říkáš. Tady jsem to uváděl jen pro vysvětlení jak se někdy špatně používá A proto jsme to trochu zjednodušil. 16.12.2018
  • rmaslo : @mario2402: Jo tohle opravdu vypadá jako celkem správné použití A. Snad jediná otázka je jestli by se to nedalo nahradit vypsáním produktů z dané kategorie. Ale to záleží na tom jak je dělané menu. Pokud jsou v něm výrobky stejné funkce (podobné výrobky stejné kategorie) tak by to možná šlo. Pokud je menu naopak třeba podle značek tak to samozřejmě nejde a toto řešení je asi správné. Pokud výrobek může být zařazen v menu vícenásobně, tak by se muselo definovat které z nich je to správné "pro podobnost" 16.12.2018
  • mario2402 : Je to tak trochu nestandardny specializovany eshop s malym mnozstvom tovaru. Kategorie sice pouziva, ale len jednourovnove, tovar vsak moze byt aj v dvoch kategoriach, preto som to na zaciatku hned vylucil. Myslim, ze riesenie A je idealne, jednoduche a asi aj najefektivnejsie. 16.12.2018

Pro zobrazení všech 5 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.