# Data source relationships

This topic describes the relationship between parent and child data sources.

Important: The way data sources interact with each other can vary based on the Data Source State Manager your portal is using. The information below only applies to the default implementation of the State Manager provided with the released version of the Discovery Framework.

Discovery Framework data sources can be configured as parents and children. These relationships can be set in a data source's JSON file through the parentDataSource:parent-ds-id property.

In a parent-child behavior, child data sources act like immutable filter sets. If you are using a child data source, the baseFunctions setting in the data source file should be specified with some set of filters. When a component connected to a child data source attempts to get the current query state, the query state is the query state of the data source's parent with all of the static filters on the child data source (specified in configuration as baseFunctions) appended to it.

When a component connected to a child data source attempts to change that data source's query state (by setting a refinement from Guided Navigation, for example), the change takes place on the parent data source. Such an operation keeps applying to a data source's parent until it finds a data source without a parent. When any data source's query state is changed, the query states of all of its children are effectively changed as well, and any components connected to them will refresh.

Note: Role-based security filters can be inherited by descendant data sources when using the Security Manager, via the parentDataSource property.