1

私はCodeIgniterを使用してCRUDシステムを作成しており、あるモデルから別のモデルにメソッドを呼び出すことで、モデル間に「1対多」の依存関係を実装しています(ORMまたはDataMapperシステムを使用していません)。

たとえば、「ユーザーあたりのドキュメント数が多い」という認識では、ユーザーを削除するときに、User_ModelはDocument_Modelのdelete()メソッドを直接呼び出し、それに関連付けられているドキュメントをすべて削除します。

「1対多」のモデル関係(ORMなどなし)を実装するためのより良い方法があると確信しており、いくつかのガイダンスをいただければ幸いです。

ありがとう

アロン。

4

1 に答える 1

0

もちろん!InnoDBエンジンの使用が許可されています。このエンジンは機能的に外部キーを持っているので、たとえば(非常に基本的な)そのようなsmthを行うことができます

CREATE TABLE IF NOT EXISTS `documents` (
  `did` bigint(11) NOT NULL AUTO_INCREMENT,
  `uid` bigint(11) NOT NULL,
  `data` varchar(255) NOT NULL,
  PRIMARY KEY (`did`),
  KEY `uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `user` (
  `uid` bigint(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(25) NOT NULL,
  `password` varchar(25) NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
ALTER TABLE `documents`
ADD CONSTRAINT `documents_cstr_1` FOREIGN KEY (`uid`) REFERENCES `user` (`uid`) ON DELETE NO ACTION ON UPDATE CASCADE;
于 2012-01-31T21:36:01.933 に答える