sql server在同一张表中同时存在主键和外键互相关联是否可以?

2024-11-27 17:47:28
推荐回答(4个)
回答(1):

设计合理,但是请不要使用外键,个人建议,真实的开发环境很少会使用外键,外键约束是一种物理约束,在开发过程中如果更改了表结构,在有外键的情况下对于表的整改将会是一个非常大的工程,因此少建立物理约束。而且这样一个表完全不需要使用外键,人为的做约束是一种最常见的方式,比如前台的输入限制,或者先通过select检索出上级再让其输入下级的数据。题外话:ID最好使用sequence,要保证其唯一性。

回答(2):

父子结构, 是可以创建外键的.
例如:

1> CREATE TABLE test_tree (
2> test_id INT NOT NULL,
3> pid INT,
4> test_val VARCHAR(10),
5> PRIMARY KEY (test_id)
6> );
7> go
1> ALTER TABLE test_tree
2> ADD CONSTRAINT FK_test_tree
3> FOREIGN KEY (pid) REFERENCES test_tree(test_id);
4> go
1>

根节点 的 父节点 为空, 这个是很正常的情况啊.
否则怎么判断 根节点.

建立外键约束, 是可以避免 创建一个节点, 其 父节点是 不存在的节点.

也就是你不能创建一个 某某市, 上一级地区ID = 不存在的 ID

回答(3):

你可以分开成两个表,一个表只放省,一个表只放市,然后进行关联

回答(4):

不可以同一张表不能关联子级的外键