質問: エンティティ(テーブル)の命名についての質問です。 一般の製造・販売・物流のシステム等において、「型名」と「製造番号」が1対多の関係にあることが多いと思います。 ただ、「型名」と「製造番号」と呼称されますが、これらは「エンティティ」ではなく「属性」にあたります。 これらの「属性」に対しての「エンティティ名称」について悩んでいます。 「製品」もしくは「商品」と命名しようかと思っていますが、以下の2点はどちらも成立してしまうように思えます。 ``` ・「型名」は「製品」の属性である。 Model name has a product. ・「製造番号」は「製品」の属性である。 Serial no has a product. ``` 当然、どちらも「製品」と命名するわけにはいきません。 「製品マスタ」と「製品」という命名も考えましたが、わかりずらく感じます。 以下の図の NamingMe の部分です。 ![NamingMe](https://teratail-v2.storage.googleapis.com/uploads/contributed_images/2b13ac0c6535fd92b7f8ce1b04a020dd.png) 一般論やいい案、私ならこうするというのがあればご教示ください。
回答: 製造業の一般論は知りませんが、 > > ・「型名」は「製品」の属性である。 > > > が混乱の元で、実際は ``` ・「型名」は「型」の属性である。 ``` だと、私は考えます。 なので、「型名」を「model_name」と呼称しているのに合わせて「型」を「model」と呼ぶようにし、 「製品」は、とりあえず「product」と呼ぶことに決めて、 ``` model id INT model_name VARCHAR(64) product id INT model_id INT serial_no VARCHAR(64) ``` と、するのはどうでしょうか?