comment structurer datatables qui seront introduites dans les lists déroulantes?

J'ai dénormalisé datatables:

+----+----------+------+--------+ | pk | name | type | animal | +----+----------+------+--------+ | 1 | alex | car | cat | | 2 | alex | bike | cat | | 3 | liza | car | dog | | 4 | danielle | bike | dog | | 5 | danielle | bus | dog | +----+----------+------+--------+ 

J'aimerais avoir 3 boîtes déroulantes.

  1. name
  2. type
  3. animal

après que l'user a choisi l'option pour le premier, il devrait y avoir un effet de cascade pour les autres lists déroulantes.

exemple: si l'user choisit danielle pour le name , les deux seules options pour le type seraient bike et bus et la seule option pour animal serait dog

Comment dois-je structurer les tables SQL? Devrais-je dénormaliser?

Je dirais que votre solution dépend de la quantité de données que vous avez dans cette table. Si cette table est relativement petite, vous pouvez la charger en memory, remplir des zones de list déroulantes par des valeurs distinctes, puis filterr datatables par champ choisi.

Si elle est grande, vous devriez peut-être dénormaliser votre table comme le dit @astander, remplir les combobox avec datatables des tables de reference, puis, lorsque la valeur change, sélectionner les filters de SQL comme:

 declare @name_id int -- input parameter, fill it with id of chosen name -- filter for type combo select distinct type_id from main_table where name_id = @name_id -- filter for animal combo select distinct animal_id from main_table where name_id = @name_id