首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数据库设计SQL -编辑期间插入的复选框值

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

Stack Overflow用户
提问于 2012-02-26 05:30:53
回答 1查看 320关注 0票数 2

我正在开发一个应用程序,有一个关于数据库设计的问题。我有一个名为'consultant‘的表、一个名为'branch’的表和一个包含consultant_id和所选branch_id集合的表。

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

其次,我知道我会在保存时将选中的分支插入到consultant_branch表中。但是,在编辑过程中,我如何做到这一点?是否删除所有顾问ids并将所选分支再次保存到consultant_branch表中?下面是SQL:

代码语言:javascript
运行
复制
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;
EN

回答 1

Stack Overflow用户

发布于 2012-02-26 06:01:21

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

  1. 删除不在new中的所有old,然后插入不在old中的所有new。对于开发人员来说,这是最繁琐的方法,而且在数据库方面代价很高,但如果关系表具有主键以外的其他属性(两个id都是),或者new.

被其他tables.

  • As引用,则需要使用这种方法。您可以说, old by new old by new old new

分析师将根据先前观点和不断扩大的应用前景,为您的案例做出最佳算法的决定。

在任何情况下,都不要忘记将所有操作包含在单个事务中,以避免数据库状态不一致。InnoDB支持事务。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9448263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档