9

Suppose I have a situation where I'm designing a website for a shoe reseller. They have different brands and kinds of shoes and of course, they want a really good search function.

So there are different properties that shoes can have. They can have exclusive properties, such as size, width, gender, and children's/adults'. Or they can have non-exclusive properties such as color (there could be two or more colors on a shoe). Some categories might conflict with certain others, such as 'dress' and 'casual' (a shoe cannot be both a dress shoe and a sneaker (ignoring "comfort" dress shoes for this example)), whereas they don't conflict with yet others, such as 'dress' and 'boot' (a shoe can be a dress boot). The exclusive properties are easy to model, but how about potentially conflicting properties? Would this be a problem for set theory?

What would this kind of applied computer science be called, in general? Data modelling, or something more specific? I want to get into the more abstract philosophical principles, such as exclusive and non-exclusive properties, and see how those principles are implemented in code, data structures, and database schemas.

A good example of what I'm talking about would be the modified preorder tree traversal algorithm. It's a great way to make a nested hierarchical categorization system. So you have a real-life organizational problem: categories, and then you have a data structure that models that problem.

Where can I learn more about this type of stuff?

user1936
  • 662
  • 5
  • 17
  • 1
    That "Nested Set Model", where you use lft and rgt columns to form a tree, is pretty cool. That is, until it's [used](http://dev.joomla.org/downloads/Joomla15_DB-Schema.htm#jos_core_acl_aro_groups) in a [real application](http://www.joomla.org/), and said application doesn't provide routines for manipulating the tree and leaves users to [fend for themselves](http://docs.joomla.org/Custom_user_groups). – Joey Adams Apr 02 '11 at 20:50
  • @Joey Adams funny! The selling point of the preorder traversal tree is that the queries for updating are easier than for adjacency lists! :D – user1936 Apr 03 '11 at 01:03

2 Answers2

1

if you're seriously designing a search feature for a shoe-selling web site, use tags instead of properties, implement a normal keyword -based search function, and forget the academic formality; users will not bother to navigate a search screen with 50 options on it

Steven A. Lowe
  • 33,808
  • 2
  • 84
  • 151
  • I'm not really designing a shoe-selling website. It was just a practical and familiar example of the points I'm trying to illustrate. – user1936 Apr 03 '11 at 01:48
  • @user1936: Predicate calculus would seem appropriate as a domain of study, but please _please_ **please** do not design real-world systems this way; this will not yield a "really good search function", it will yield a search function that no one but you understands :-) – Steven A. Lowe Apr 03 '11 at 02:17
  • what exactly is the difference between `tags` and `properties` that you mention in your answer? If you have a promiscuous tagging system, what's to prevent a back-end user (the warehouse person) from marking a shoe as both `sandal` and `boot`? These seem like reasonable concerns to me. Most of the shoe selling sites I've seen (zappos, etc) seem to operate on principles similar to these. – user1936 Apr 03 '11 at 17:21
  • 1
    @user1936 i would consider properties to be formally-defined named values such as Size, Style, Manufacturer, and so on, while tags would be any keywords you care to associate with an item. There is nothing to prevent a back-end user from marking a shoe as both sandal and boot, _nor in general is it necessary to do so_. Current stylistic conventions are not natural laws, i.e. they can change. Today's nonsense is tomorrow's bold fashion statement and hot trend. Zappos, for example, does in fact sell sandal boots. http://www.zappos.com/sandal-boot – Steven A. Lowe Apr 03 '11 at 17:40
  • @user1936: if you really really really want to control the tagging, put tags into categories and make rules based on category collisions. But I suspect - especially in a non-technical domain - any rule one might come up with can have an exception (c.f. sandal boots)! – Steven A. Lowe Apr 03 '11 at 17:44
1

In general, the field of study would be considered data modeling or taxonomy. The shoe-selling website is specifically an example of faceted classification.

Some starting points for faceted classification research:

Ciaran
  • 766
  • 5
  • 11