顧客テーブルは次のようになります。親テーブル(顧客)の列に共通のデータ型とインデックスが必要です。列タイプ/インデックスが間違っている場合、FKは子テーブルの作成に失敗します。
また、ALTER TABLE add constraint
の場合 子に既存のデータがあるコマンド。データが有効でない場合は失敗します。
ちなみに、INT(4)は単なる表示幅です。それはまだintです。
create table customers(
customer_id int auto_increment primary key,
customerName varchar(100) not null
-- other columns
);
CREATE TABLE accounts(
account_id INT AUTO_INCREMENT PRIMARY KEY,
customer_id INT( 4 ) NOT NULL ,
account_type ENUM( 'savings', 'credit' ) NOT NULL,
balance FLOAT( 9 ) NOT NULL,
FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
) ENGINE=INNODB;