首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >向相互依赖的新表中插入新数据

向相互依赖的新表中插入新数据
EN

Stack Overflow用户
提问于 2018-07-04 19:39:22
回答 2查看 44关注 0票数 0

我不知道如何用值为我的数据库添加种子。几乎我拥有的每个表都是相互引用的,所以我不知道如何执行insert语句。下面是我对这两个问题的表模式:

代码语言:javascript
代码运行次数:0
运行
复制
CREATE TABLE utility_company (
    utility_company_id int(11) NOT NULL AUTO_INCREMENT,
    utility_company_name varchar(50) NOT NULL,
    utility_company_monthly_numbers_id int(11) NOT NULL,
    PRIMARY KEY (utility_company_id)
);

CREATE TABLE utility_company_monthly_numbers (
    utility_company_monthly_numbers_id int(11) NOT NULL AUTO_INCREMENT,
    utility_company_id int(11) NOT NULL,
    january_numbers int(10) NOT NULL,
    february_numbers int(10) NOT NULL,
    march_numbers int(10) NOT NULL,
    april_numbers int(10) NOT NULL,
    may_numbers int(10) NOT NULL,
    june_numbers int(10) NOT NULL,
    july_numbers int(10) NOT NULL,
    august_numbers int(10) NOT NULL,
    september_numbers int(10) NOT NULL,
    october_numbers int(10) NOT NULL,
    novemember_numbers int(10) NOT NULL,
    december_numbers int(10) NOT NULL,
    PRIMARY KEY (utility_company_monthly_numbers_id)
);

ALTER TABLE utility_company ADD FOREIGN KEY (utility_company_monthly_numbers_id) REFERENCES utility_company_monthly_numbers(utility_company_monthly_numbers_id);
ALTER TABLE utility_company_monthly_numbers ADD FOREIGN KEY (utility_company_id) REFERENCES utility_company(utility_company_id);

我现在的数据库中没有值,所以我想不出如何在不抛出外键约束错误的情况下将数据插入其中的一个表中。

,我能在这里做什么来做我的插入?

所以我引用了这些问题,但我无法得到答案:

Mysql: How to insert values in a table which has a foreign key

这个方法不起作用,因为在对我来说有意义的情况下,它只是说使用两个insert语句。但是没有回答我如何防止我的外键失败

https://dba.stackexchange.com/questions/66778/how-to-insert-data-into-tables-which-reference-each-othermysql

这个也不起作用,因为它根本没有真正回答这个问题。

EN

回答 2

Stack Overflow用户

发布于 2018-07-04 19:51:00

我觉得你应该重新考虑你的数据库设计。

如果您有utility_companymonthly_number,那么使用两个带有一个外键的表似乎是可行的。

monthly_number将有3列:

  1. utility_company外键
  2. the monthly_number
  3. 月份(可能是一个整数)

通过使用这个设计,它用一个非常简单的外键结构解决了您的问题。

monthly_number表中的每条记录都代表特定月份特定公司的monthly_number

如果您需要记录跨年的数字,那么也可以添加一个year列。

票数 0
EN

Stack Overflow用户

发布于 2018-07-04 19:58:25

另一种解决方案是否使用M:N关系,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
utility_company: utility_company_id (PK), utility_company_name
month: month_id (PK), month_name
monthly_figures: utility_company_id (composite PK), month_id (composite PK), numbers 

year列也可以轻松地添加到表monthly figures中。

这样,在向monthly_figures联接表添加任何内容之前,父表中的数据必须存在。这解决了我应该填充哪个表的第一个问题。

或者,您可以使用传统的1:M场景,其中utility_company_id只是表monthly_figures上的FK。在这里,将首先填充父utility_company表。

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

https://stackoverflow.com/questions/51179982

复制
相关文章

相似问题

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