Softwareという名前のエンティティと、2つのサブタイプFreeSoftwareおよびNonFreeSoftwareがあるとします。NonFreeSoftwareエンティティには、購入日、ベンダーなどの属性があります。FreeSoftwareエンティティには、ライセンス、ソースコードのURLなどの属性があります。
それで、別のエンティティであるOperatingSystemをモデル化したい場合、どうすればよいですか?ソフトウェアには「ある」関係がありますが、FreeSoftwareおよびNonFreeSoftwareには「どちらかまたは両方」の関係があります。
この階層を分析する方法に何か欠けていると思います。