I tag possono avere valori?

0

Sto progettando un sistema in cui gli articoli possono avere tag, il che è abbastanza facile. Il problema è che abbiamo anche bisogno di elementi con attributi arbitrari. Ad esempio, un elemento può avere un attributo chiamato "Lunghezza" con il valore numerico di 10. Un altro elemento non può avere attributo "Lunghezza". Questo per consentire agli utenti di cercare tutte le cose nel database che hanno una lunghezza di 10, ad esempio.

Ha senso integrare questi attributi arbitrari con i tag? Un design del genere consentirebbe ad alcuni tag di avere valori e ad altri tag di non avere valori. O dovrei separare i due, e avere tag normali, così come attributi?

Non sono chiaro sulla terminologia, come si chiama questo design di attributo arbitrario?

    
posta Hassan 18.04.2017 - 18:56
fonte

1 risposta

1

Penso che potrebbe essere meglio tenere separati tag e attributi. Gli attributi sono di solito coppie nome / valore e sono spesso (secondo la mia esperienza) digitati in modo tale da non poter immettere il peso di un prodotto come "blu".

I tag sono solo parole associate a un prodotto, come i tag "morning", "caffeine", "I_need_it_bad!" che potrebbe andare con una caffettiera.

Ecco uno schema di dati di esempio:

Items
-----
  - id (PK)
  - name

Item_Attributes
---------------
  - id (PK)
  - type (Could be "NUMBER", "STRING", or FK to a special "types" table)
  - name ("length", "weight", "zodiac sign", etc...)

Item_Attribute_values
---------------------
  - id (PK)
  - item_id (FK to items.id)
  - item_attribute_id (FK to items_attributes.id)
  - value (such as "4 m", "3.4 kg", "Scorpio", etc...)

Tag_Names
---------
  - id (PK)
  - name (any tag name)

Item_Tags
---------
  - id (PK)
  - tag_id (FK to tag_names.id)
  - item_id (FK to Items.id)

Questo design ti consente di associare qualsiasi Item_Attribute a qualsiasi elemento. Ti consente di specificare un tipo, anche se dovrai applicarlo da qualche altra parte (nel tuo front-end, nel tuo back-end, diamine potresti provare anche nei trigger INSERT / UPDATE). Consente inoltre di applicare più tag in formato libero agli elementi.

    
risposta data 18.04.2017 - 19:14
fonte

Leggi altre domande sui tag