首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理论PHP问题

理论PHP问题
EN

Stack Overflow用户
提问于 2009-10-19 20:05:39
回答 2查看 286关注 0票数 0

我想知道您是否可以指定使用CLI加载表定义和数据fixture的顺序。我的问题是,我有两个表,每个表都有一个指向另一个的外键约束,因此需要在添加记录后添加其中一个约束。或者也许有更好的方法来做这件事……我不是数据库专家,今天我的头很模糊。

模式:

代码语言:javascript
复制
CREATE TABLE clients (
  id INT AUTO_INCREMENT,
  name VARCHAR(255), address VARCHAR(255), 
  primary_contact_user_id INT  # References a user record in the users table
  ...
);

CREATE TABLE users (
  id INT AUTO_INCREMENT,
  username VARCHAR(255),
  client_id INT  # References a client record in the clients table
  ...
);

ALTER TABLE clients 
  ADD CONSTRAINT clients_primary_contact_user_id_users_id 
    FOREIGN KEY (primary_contact_user_id) REFERENCES users(id);

ALTER TABLE users 
  ADD CONSTRAINT users_client_id_clients_id 
    FOREIGN KEY (client_id) REFERENCES clients(id);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-10-19 20:30:23

我也不是数据库专家,但我确实花了很多时间与他们合作。我认为循环引用实际上是不正确的。

无论DB理论是否认可它,您都可以通过连接到另一个表来获得一个字段,因此它是一个不必要的循环引用。我建议您删除一个,并更改任何查询以反映此更改。

基于猜测,我建议您删除primary_contact_user_id,因为这听起来几乎像是一种可能的多对多关系,其中一个项目被选为“主要”……

如果你觉得这个设计是必要的,你能解释一下为什么吗?

票数 1
EN

Stack Overflow用户

发布于 2009-10-20 04:31:19

将INSERT语句放在CREATE TABLE和ALTER TABLE语句之间。

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

https://stackoverflow.com/questions/1590801

复制
相关文章

相似问题

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