我不知道如何用值为我的数据库添加种子。几乎我拥有的每个表都是相互引用的,所以我不知道如何执行insert语句。下面是我对这两个问题的表模式:
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语句。但是没有回答我如何防止我的外键失败
这个也不起作用,因为它根本没有真正回答这个问题。
发布于 2018-07-04 11:51:00
我觉得你应该重新考虑你的数据库设计。
如果您有utility_company
和monthly_number
,那么使用两个带有一个外键的表似乎是可行的。
monthly_number
将有3列:
utility_company
外键monthly_number
通过使用这个设计,它用一个非常简单的外键结构解决了您的问题。
monthly_number
表中的每条记录都代表特定月份特定公司的monthly_number
。
如果您需要记录跨年的数字,那么也可以添加一个year
列。
发布于 2018-07-04 11:58:25
另一种解决方案是否使用M:N关系,如下所示:
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
表。
https://stackoverflow.com/questions/51179982
复制