First, you aren't really creating a zone with the server and the datastore. You are creating a zone between initiators and targets.
How many targets you have and how you configure access to the volumes/devices/LUN's/Datastores (whatever term you want to use) through the targets can largely depend on the capabilities of the individual storage array you are using. That is really a function of LUN masking and isn't directly related to your zoning.
In a over-simplified slightly misleading statement: Zoning is about limiting access to a storage appliance. Masking is about limiting access to the volumes on the storage appliance.
From a high level, single initiator single target zoning (one initiator, one target per zone) is generally considered a best practice but can create quite a few zones to setup, manage, and maintain. For example a server with two fiber HBA's (2 initiators) connecting to a storage array with 2 ports on each controller (4 total targets) would require 8 individual zones. A 4-host VMWare cluster would require setting up 32 zones (8 for each host).
However, best practices can be vendor specific and different from the generic recommendations provided. Always best to validate any decisions made with their support and/or documentation.