This is the "subtype" situation and is covered extensively in Stephane Faroult's the Art of SQL
The recommended solution involves using the same unique key (in this case, say CropID
) across all tables, Crop
, Corn
, Soybean
and Grain
. The set of primary keys of the Crop
table then becomes the union of primary keys of Corn
, SoyBean
and Grain
. In addition, you define an attribute, say CropType
, on the Crop
table indicating the type of each Crop
record.
This way, common attributes stay on the Crop
table and type-specific attributes go to type-specific tables with no redundancy.