Invitație la computerele și internetul habrahabr

Și pentru ce altceva, după părerea dvs., trebuie să scapiți de starea de citire numai pe hub?

Esența problemei este următoarea:

În prezent, adaug un magazin online (computere, componente, calculatoare portabile etc.).







La întrebarea de gândire prin structura bazei de date nu a venit destul de bine, tk. acesta este primul proiect mai mare sau mai mic.
La etapa inițială, până când baza a fost adăugată doar laptop-uri, netbook-uri, etc., se pare că totul este bine. Dar atunci a apărut întrebarea despre adăugarea de truse și de bunuri similare, pentru că laptop-uri și numărul lor de atribute (câmpuri din tabel)

24 + pentru fiecare tip de accesorii pentru alte 5-6 unice pentru fiecare tip de atribute, adică în procesul de masă ar trebui să crească în lățime, cum ar fi și tolerant, dar:

În căutarea unei soluții la această problemă, m-am dus la Internet. Ei bine, de fapt pentru mine, am identificat două moduri de bază ale construirii bazei de date:

1) Single Table Moștenirea (STI) - această structură implică o singură masă pentru toate produsele de toate tipurile și, așa cum am așteptat, va crește în lățime și de cele mai multe câmpuri în ea va fi NULL-evymi. Se pare că numărul de bunuri nu ar trebui să depășească 5-6 mii (conform previziunilor preliminare). un tabel cu aproximativ 40-50 câmpuri și 5000-6000 rânduri va readuce valorile necesare fără probleme în câteva momente. Și da, această structură este o bază de date relațională, care pentru mine personal a fost o revelație.

Aici, în "admin", când adăugăm bunuri la o masă mare, specificăm câmpurile care trebuie completate, restul devenind NULL automat.

2) Entitatea-Atribut-Valoare (EAV) - implică divizarea mărfurilor în trei tabele:

- Entitate - Un tabel care stochează informații despre TOATE produsele, dar sub formă de 4-5 coloane principale (același pentru toți). Cum ar fi: id, nume, preț, producător și așa mai departe.

-Atribut - stochează întreaga listă de atribute pentru fiecare tip de produs în formular (id_attribute, attr_value) adică. se pare destul de aceeași masă lungă, așa cum am înțeles. Dacă, să zicem, vor exista 1000 de laptop-uri cu 15 parametri unici - aceasta este de 15.000 de linii (nu atât de mult, dar asta este)

-Valoarea este un tabel care leagă entitatea și atributul cu chei străine, perechi de formular (id_product, id_attribute) adică. Dimensiunea sa va fi ușor mai mare decât tabelul Atribute.







Total: avem informațiile despre bunurile răspândite pe rafturi, care sunt stocate "prost" de indicii din baza de date. Dar, din nou, după ce a citit în tyrnetah, el și-a evidențiat următoarele minusuri ale acestei structuri:

-Solicitările vor fi foarte (ca și pentru mine) minunate. Pentru a afișa un card de bunuri va trebui să înjunghiați în INNER JOINS

-Complexitatea structurii și, în consecință, confuzia apare din partea motorului (scriu acest lucru în PHP), din nou, tot restul și așa mai departe.

-Și în general: este jocul care merită lumanarea. Cu atâtea bunuri, merită să fie distorsionată în acest fel?

Aceasta este de fapt ceea ce am vrut să spun și ce să întreb mințile programării)

Vă mulțumesc pentru atenție!

A doua opțiune este destul de funcțională și ușor de folosit, principalul lucru fiind acela de a descompune în mod corect structura obiectelor și proprietățile lor, luând în considerare întreaga gamă de bunuri, astfel încât adăugarea de noi tipuri de bunuri să nu conducă la o modificare a structurii bazei de date.

Dacă totul se face corect, va fi necesar doar monitorizarea conținutului, calității și relevanței datelor.

Vă mulțumim că ați răspuns!

În acest moment încerc să implementez ceva de genul:

Există un tabel cu tipurile de caracteristici principale: tipuri (id, titlu)

există un tabel în care sunt stocate valorile acestor caracteristici: type_list (id, id_type, value)

și în tabelul de bunuri (da, va fi același pentru toată lumea) în domeniile acestor caracteristici vor fi importate chei străine de la tabelul type_list

Invitație la habrahabr

Pentru a înțelege mai bine ceea ce aveți nevoie în cele din urmă pentru a obține, vă puteți uita la acest funcțional din poziția de utilizator al sistemului. Prezentați formularul web de lucru (sau căutați într-un alt magazin) cu care se va face cererea, vedeți care filtre sunt cele cheie care taie seturi de date mari bazate pe diferite tipuri de bunuri (acestea vor fi difuzate prin directoare sau câmpuri de tip separat).

Aflați ce fel de anchete generale pot fi de la fiecare formular (de la ieșirea din lista de bunuri cu câmpuri diferite, până la unele tipărite).

Structura este destul de logică, dacă am înțeles corect că aceasta este ceva de genul:

2 | 1 | Accesorii - pentru reparații etc.

3 | 1 | accesorii
4 | 2 | Netbooks

5 | 2 | accesorii

gânduri Stroke aveți este corectă, dar este important să se prezinte un proces de afaceri reale de lucru, se va deschide o mulțime de nuanțe și cerințele de fier sunt luate mai bine în considerare imediat, astfel încât să nu lopata întreaga structură și conținut.

La o implementare specifică, nu pot ajuta prea mult, pentru că Nu cunosc detaliile și nu sunt special în SQL, dar lucrez doar cu bazele de date ale diferitelor sisteme și am văzut totul.

Doar 2 zile mai târziu adorm și mă trezesc cu gândurile în capul meu)

Stau la lucru, așa că, seara, voi începe să fac ceva. sa oprit până acum la "pre-upgrade" versiunea preliminară de încercare:

1 tabel - mărfurile (id, titlu, brand, preț, img ..) stochează în sine informații despre TOATE produsele, dar numai câmpurile principale pe care le are fiecare produs.

Tabelul 2 - notebook-uri (id, id_good, param1, param2, param3) păstrează informațiile referitoare la laptop-uri pentru kazhdoogo nouta - o linie la id_good - mărfurile din tabel cheie externă;

Poate că - este maximul pe care îl pot în momentul de față să-l pot retrage din mine). eu la prof. programatorul este încă departe, iar momentul este strâns. și încă pe mine este punerea în aplicare a PHP, interfața magazinului administrativ cu o gamă largă de funcții, design de site-ul web, și alte arome delicioase, cum ar fi un filtru de produse atât pe soclu și așa mai departe)







Articole similare

Trimiteți-le prietenilor: