またまたCouchDB絡みの話です。key-valueストアでスキーマフリーなデータベースを前提にすると、DB設計の考え方が大きく変わってくるのを感じます。 得意先でもあり仕入先でもあるという場合、上位の抽象クラスとして取引先を作ってそれを継承するという形になるのが一般的だと思います。ところがこれがスキーマフリーのパラダイムになると「タグでいいじゃん」ということになる。 例えば得意先でもあり仕入先でもあるというような場合、取引先という抽象エンティティを置いてそれを継承・派生させる形でモデルを作ります。これはERモデリングだとサブセット、OOだとサブクラスと呼ばれます。しかしスキーマレスにはそもそもそんな区別がありません。タイプという名前で属性をひとつ作ってしまって、そこに「"得意先", "仕入先"」という値を入れればいいだけです。 クラスなり集合なりというのを考えるに際しての一番のポイント