Best Practices for Lookup Tables - Printable Version +- CodeIgniter Forums (https://forum.codeigniter.com) +-- Forum: Archived Discussions (https://forum.codeigniter.com/forumdisplay.php?fid=20) +--- Forum: Archived Development & Programming (https://forum.codeigniter.com/forumdisplay.php?fid=23) +--- Thread: Best Practices for Lookup Tables (/showthread.php?tid=12638) |
Best Practices for Lookup Tables - El Forum - 10-26-2008 [eluser]ladyj001[/eluser] I have a product table with several foreign keys to lookup tables (e.g., categories, formats, etc.) In my Product_model class, I have a function that returns a product as an associative array (i.e., $product['name'], $product['price'], etc. With regards to lookup fields, sometimes I want the foreign key (e.g., $product['category_id'] as in the case of generating an update form with a category drop down list. Other times, I want the lookup name as in the case of simple text output. For some views, I may actually need both (e.g., views with text output and form elements). My question is what is the best way to implement lookup table relationships? There doesn’t seem to be a de facto standard. Option 1 – In the past, I would simply do a join and return both the lookup id and name (e.g., $product['category_id'] and $product['category_name']). But something has always bothered me about having two fields that reference the same thing. In theory, one could change the value of $product['category_id'] without changing $product['category_name']. Option 2 – Still use joins; but, for each lookup relationship create a sub-associative array (e.g., $product['category']['id'] and $product['category']['name'] Option 2 – Create a lookup helper or library that would load all needed lookup tables when loaded. Then in my views I could do something like $this->load->helper('lookup',array('category','format')); … Product Category: <?php echo lookup($product['category_id']) ?> The helper could also have a select_list function to be used to create arrays for dropdown lists e.g., form_dropdown('category_id',select_list('category'),$product['category_id']) Just curious how other people deal with lookup tables. |