ユーザーテーブルとの関係を外部キーとして定義していますが、必ずしも設定する必要はありません。つまり、関連するレコードがあってはなりません。
私の MySQL エディター (Sequel Pro) では、addressId を「null を許可」することはできません。入力を無視します。最新バージョンを使用しています。
アドレス ID なしでユーザー テーブルに新しいエントリを作成すると、「子行を追加または更新できません: 外部キー制約が失敗します...」と表示されます。しかし、アドレスなしでユーザーを追加できるようにしたい! それは可能ですか?
それとも、単に外部キーを削除する必要がありますか? その欠点は何ですか?
CREATE TABLE `User1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(200) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`password` char(32) DEFAULT NULL,
`addressId` int(11) NULL DEFAULT '0',
`created` datetime DEFAULT NULL,
`activated` datetime DEFAULT NULL,
`lastLogin` datetime DEFAULT NULL,
PRIMARY KEY (`id`,`addressId`),
KEY `FK_User_Locale` (`localeId`),
KEY `FK_User_Address` (`addressId`),
CONSTRAINT `FK_User_Address` FOREIGN KEY (`addressId`) REFERENCES `Address` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;