First, in terms of using "@type" and "@id" without the rest of the structured data. You should avoid this across different pages, because in my experience Google doesn't always get it right. "@id" is not used in any of their Structured Data documentation so it's not confirmed they support its use in indexing. It does seem to work on the same page. For example, if you use Product schema and Article schema with an "about" property on the same page.
However, I don't recommend including the Product schema on all pages that it appears on unless it is a primary focus, simply because it makes it harder for search engines to figure out what the page primarily is about. Google's documentation states:
"Don't mark up irrelevant or misleading content, such as fake reviews
or content unrelated to the focus of a page."
Also see the section "Relevance" on the same page.
I won't give a rule of thumb or maximum number of schemas to include on a page, but it should be determined by relevancy to the webpage. For example:
- On a product page, mark up the specific product, but not an ItemList of Products for the carousel you have showing off related products.
- On a page that contains a video showing how to use the product, mark up the VideoObject and the Product, either by nesting the Product in the "about" property of the VideoObject, or including them both in separate blocks and connecting them with "@id":"[name of product]" to indicate the relation between the two. (Source)
- On a blog post that reviews the product, mark up Article, Review, and Product, using either nesting or the "@id" method.
Overall, the process should be:
- Asking yourself what the page is primarily about, what its intended use is, how users will likely find it, and what purpose does it serve.
- Choosing which SD types best represent the page based on your answers.
- Determining how to represent the relation between the multiple entities, if there are multiple.
Additionally, if you're using multiple schemas supported by Google, note that there have been statements from Google that say it will only choose one to base rich results off of in search and it may not choose the one you prefer. The chance of them getting it wrong depends on what you're marking up, but let's say as an example, you have a landing page about a Brand, marked up with Organization schema, and it mentions a few of their products so you also include multiple Product schemas. You probably want the Brand's company info to appear but Google may show one or of the Products instead, so it's just another reason to approach this from a relevancy standpoint rather than sticking SD types everywhere as much as possible.