Steve Atkins wrote:

On May 4, 2008, at 9:02 AM, Christopher Laco wrote:



My pet peeve is that /foo/primary_key makes computers happy... but not people.


/products/23
/products/ABC-1234


The first is the PK for a product record..
The second is the actual sku for a product... just a unique as the pk...but not the PK itself...


Now what does "id" mean in this case?
What id your SKU is a numeric just like your PK?

Two different and equally useful ways to get at the same resource.

If you're talking about an interface where humans know the skus, and computers know the id (restfully and/or remotely).. you need a sane uri:

/products/id/<id>
/products/sku/<sku>

In the end, I always run into a situation where humans (think marketing SEO pushers who know not of REST) want something other than a true restful uri.

Part of the problem here might be the wish to avoid a natural
primary key in the database schema, preferring a synthetic
primary key even when there's a perfectly good natural
primary key.

That's something that I expect to see from the ruby on
rails crowd, not the (presumably more pragmatic) perl folks.

If your SKU is unique, then it's a perfectly good primary
key, and having a synthetic numeric primary key isn't
necessary.

Not really. SKU is unique yes, but it can change (renamed, reconfigured when companies merge, etc) for the same physical product. It's a poor PK for the purposes of joining records to it, but a great key for the purposes of lookup and selling the item.

One could argue that UPC is a better key than sku, but that's not very friendly.

-=Chris

_______________________________________________
List: Catalyst@lists.scsys.co.uk
Listinfo: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/catalyst
Searchable archive: http://www.mail-archive.com/catalyst@lists.scsys.co.uk/
Dev site: http://dev.catalyst.perl.org/

Reply via email to