私はアプリケーションを開発しており、データベースデザインに関する質問があります。私は 'consultant'と呼ばれるテーブル、 'branch'テーブル、consultant_idと選択されたbranch_idのコレクションを持つテーブルを持っています。データベースデザインSQL - 編集中にチェックボックスの値が挿入されました
新しいコンサルタントの挿入中に、すべてのブランチ名がチェックボックスに表示されます。ユーザーはコンサルタントに関する情報を入力し、特定のチェックボックスを選択します。コンサルタントに関する情報はコンサルタントテーブルに挿入され、選択されたブランチはコンサルタントのIDおよびブランチのIDを含むテーブルconsultant_branchに挿入されます。このデータベース設計は正しいですか?
第2に、保存中にconsultant_branchテーブルに選択したブランチを挿入することを理解しています。しかし、編集中にどうすればいいのですか?すべてのコンサルタントIDを削除し、選択したブランチをconsultant_branchテーブルに再度保存しますか?ここでSQL:
CREATE TABLE IF NOT EXISTS `consultant` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`street` varchar(50) NOT NULL,
`plz` varchar(10) NOT NULL,
`city` varchar(10) NOT NULL,
`status` int(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `branch` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(50) NOT NULL,
`status` int(1) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
CREATE TABLE IF NOT EXISTS `consultant_branch` (
`consultant_id` int(10) NOT NULL,
`branch_id` int(10) NOT NULL,
KEY `consultant_id` (`consultant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
ALTER TABLE `consultant_branch` ADD CONSTRAINT `FK_bbb` FOREIGN KEY (`consultant_id`) REFERENCES `consultant` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
「consultant_branch」の主キーとは何ですか? (私はそれが2つの列の組み合わせだと思いますが、なぜirが見つからないのでしょうか?) –
プライマリキーは必要ありません - 私はそう考えています - テーブルにはconsultant_idの複数の同じエントリがあるかもしれないからです。私は、アプローチがうまくいっているかどうかと、ユーザーがコンサルタントの選択されたブランチを編集したときに何をするかを質問します。 – owsata
私は 'PRIMARY KEY'の'(consultant_id、branch_id) '、' FOREIGN KEY' (あなたが既に持っていて、別の 'FOREIGN KEY branch_id REFERENCESブランチ(branch_id)'。 –