This is the first in the series of articles which will describe the Product catalog system.
Brief history of the catalog system
        The Product catalog system was first introduced in Commerce Server 2000. This version was COM based with Sql server being the data store. The next release in Commerce Server 2002 added a number of features which included virtual catalogs, multi language support, external join table support etc. While being COM based this version offered a runtime BCL which allowed developers to access the runtime functionality of the catalog system using managed code. The Feature Pack further extended the catalog system by adding web services model, authorization and a managed API to program the catalog system through the web services.
Logical Components
       The following diagram roughly summarizes the logical components and their relationships in the product catalog system.
The information in the product catalog system is divided into three broad sections
1.   Catalog Schema, which contains the properties and definitions that can be used in one or more catalogs.
A property is used to define a specific characteristic of a category or a product in a catalog. For eg. a property named Description can be used to describe a product or a category in a catalog.
A definition is a logical grouping of properties, which serve as a template for creating products and categories. A definition can be a product definition or a category definition.
 2.   Catalog Data, which contains the catalogs in the catalog system. A catalog can be either a base catalog or a virtual catalog. Base catalogs contain categories and products while virtual catalogs can contain categories and also include content from one or more base catalogs by virtue of a set of inclusion, exclusion and pricing rules.
3.   Catalog Sets, which can be used to group together a set of catalogs. The catalog sets are mainly used to associate targeted users to a group of catalogs and then display the catalogs on the run time site based on  the users profile.