Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> "Nieograniczona" ilość atrybutów?
Tiregan
post
Post #1





Grupa: Zarejestrowani
Postów: 9
Pomógł: 0
Dołączył: 25.01.2011

Ostrzeżenie: (0%)
-----


Witajcie,
Chciałem się zapytać co bardziej doświadczonych o pewne zjawisko, które spostrzegłem.
Otóż na niektórych serwisach przy dodawaniu różnych "rzeczy" jest możliwość dodania nowego atrybutu, chociażby taki gmail, gdy tworzymy kontakt możemy mu dodawać różne pola, i to bardzo dużo, nie doszedłem do limitu.

Może ktoś z Szanownych Forumowiczów wie, wyobraża sobie jak, to wygląda w bazie MySQL?


Czy mój pomysł jest dobry?
Dodajmy atrybut typu longtext o nazwie opis. Niech będzie, to opis jakiegoś produktu w sklepie internetowym. Tak na prawdę nie będzie, to jedna zakładka na karcie produktu, ale będzie przechowywała ich kilka. Utworzę tak jakby znacznik nowej zakładki/atrybutu np. [bookmark]Nazwa zakładki[/bookmark]. Potem utworzę funkcję "parsującą", która mi podzieli owe pole opis na zakładki po tym właśnie znaczniku.

Przykład:
[bookmark]Opis[/bookmark]
Teks w zakładce.
[bookmark]Dane techniczne[/bookmark]
Teks w zakładce.
[bookmark]Dodatki[/bookmark]
Teks w zakładce.
[bookmark]Coś tam[/bookmark]
Teks w zakładce.

I tak w jednym polu typu longtext mamy teoretycznie ile chcemy zakładek.
Minusem jest, to że operacje na długim tekście wykonują się długo, z tego co wiem przynajmniej. Ktoś może ma lepszy pomysł? W MySQL chyba nie ma jakiegoś "typowego" rozwiązania tego problemu?


Jeżeli Wam także wątek wydaje się ciekawy, to może nie wybrałem najlepszego tytułu? Może go zmienić na inny?

Dziękuję,
T.

Ten post edytował Tiregan 25.01.2011, 23:44:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Właściwie to troszkę sie zagalopowałem w odpowiedzi :/ Przepraszam.
Równie dobrze możesz przechowywać dane w tabeli o takiej strukturze
Kod
id - id rekordu
id_kontaktu - id kontaktu do jakiego przypisujesz pole
nazwa_pola - nazwa pola np "Imię"
wartosc_pola - no i wartość jaką przypisujesz temu polu

Oczywiście możesz ją rozszerzyć o jakieś "id_pola" dla typów predefiniowanych (email, telefon)
Wraz z pobraniem kontaktu pobierasz wszystkie pola do niego przypisane. Wpakujesz to wszystko razem w jeden obiekt cache i po sprawie. Wadą tego rozwiązania jest to iż wyszukiwanie po takiej tabeli jest niewydajne. W modelu EAV również wyszukiwania nie będzie supermanem. Oczywiście mam na myśli już tabele pokaźnych rozmiarów.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 14.10.2025 - 21:43