1

次の問題があります。現在、シャトルサービス会社向けのシステムを開発中です。現在、このシステムのデータベース内のエンティティの一部には、多数のルックアップ テーブル ( vehicle_type、employee_status など) と、 vehicle や vehicle_service ログなどの他のテーブルが含まれています。

現在、私たちチームが抱えている問題は、エンティティ間の論理関係のカーディナリティがどうあるべきかについて合意できないことです。2 つの主要な問題関係には、次のように定義されたテーブルが含まれます。

CREATE TABLE IF NOT EXISTS `user_type` (
  `type_id` tinyint(4) NOT NULL AUTO_INCREMENT,
  `description` varchar(200) NOT NULL,
  PRIMARY KEY (`type_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COMMENT='Store the user types - employee
 or consultant' AUTO_INCREMENT=1 ;

にリンクされている

CREATE TABLE IF NOT EXISTS `user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(100) NOT NULL,
  `password` varchar(100) NOT NULL,
  `user_type` tinyint(4) NOT NULL,
  PRIMARY KEY (`user_id`),
  KEY `user_type` (`user_type`),
  KEY `username` (`username`),
  KEY `login` (`username`,`password`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COMMENT='Table used when logging in 
to check access level, type of user, etc. ' AUTO_INCREMENT=1 ;

テーブルには、その他のuser無関係なデータが含まれています。したがって、ここでの問題は、私が (MySQL Workbench がそのようにリバース エンジニアリングしたため、より理にかなっているため) 関係は 1 対多であるべきだと言っているのに対し、別のチーム メンバーは 0 対多であるべきだと言っていることです (いくつかのレコードが存在する可能性があるため)。表でuser_type使用されていないものuser)

私たちが話している他のテーブル関係は、次のように定義されています。

CREATE TABLE IF NOT EXISTS `vehicle` (
  `vehicle_id` int(11) NOT NULL AUTO_INCREMENT,
  `registration_number` varchar(10) NOT NULL,
  PRIMARY KEY (`vehicle_id`),
  UNIQUE KEY `registration_number` (`registration_number`),
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 COMMENT='Actual vehicle information'
 AUTO_INCREMENT=1 ;

繰り返しますが、質問に関連しない他の列があります。これは

CREATE TABLE IF NOT EXISTS `service_log` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `vehicle_id` int(11) NOT NULL,
  `description` text NOT NULL,
  `date` date NOT NULL,
  `cost` double NOT NULL,
  PRIMARY KEY (`id`),
  KEY `vehicle_id` (`vehicle_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Store records of all services 
to vehicles' AUTO_INCREMENT=1 ;

車両がまだサービスを受けていない可能性があるため、これは 1 多または 0 多のどちらにする必要がありますか? 私によると、それは1対多でなければなりませんが、これが論理的に機能するかどうかはわかりません。

私たちは皆、この論理モデリング全体について非常に混乱しているので、どんな助けも大歓迎です!

最初に DB を作成し、次にそれを物理モデルにリバース エンジニアリングする方が簡単だと考えましたが、論理については考えていませんでした。

4

1 に答える 1