gpt4 book ai didi

mysql - 数据库设计 SQL - 编辑期间插入的复选框值

转载 作者:搜寻专家 更新时间:2023-10-30 20:20:20 25 4
gpt4 key购买 nike

我正在开发一个应用程序并且对数据库设计有疑问。我有一个名为“consultant”的表、一个“branch”表和一个包含 consultant_id 和所选 branch_id 集合的表。

发生的情况是,在插入新顾问期间,所有分支名称都显示在复选框中。用户填写有关顾问的信息并选择某些复选框。有关顾问的信息被插入到顾问表中,所选分支机构被插入到包含顾问 ID 和分支机构 ID 的表 consultant_branch 中。这样的数据库设计对吗?

其次,我明白我会在保存期间将选定的分支插入到 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;

最佳答案

它们是两种方法。假设 new 是 consultant_banch 的新列表,old 是旧列表:

  1. 删除所有不在new中的old,然后插入所有不在old中的new >。对于开发人员来说,这是最繁琐的方法,并且在数据库方面成本高昂,但如果关系表具有其他属性而不是主键(均为 id)或被其他表引用.

  2. 如你所说,replace old by new 删除 old 并插入 new .

分析师将根据之前的分数和不断增长的应用前景,为您的案例决定最佳算法。

无论如何,不要忘记将所有操作包含在一个事务中以避免数据库状态不一致。 InnoDB 支持事务。

关于mysql - 数据库设计 SQL - 编辑期间插入的复选框值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9448263/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com