2 carlgk CarlGK 于 2017.09.05 14:08 提问

sqlserver中,两张表,B表可以放A表的列吗,还有很多地方都要用到某些值,那要放在哪张表里。 10C

两张表像这样可以吗?B表可以放A表的列
create table A
(
A_Id int ,
A_Name nchar(10),
A_Sex nchar(10)
)
create table B
(
B_Id int,
A_Name nchar(10),
B_dept nchar(10)
)
还有,比方说一个上次操作日期分别会在操作员页面,小组长页面等等表中用到,那到底要放在哪张表里,以下是我自己想的,这个上次操作日期lastDate 肯定不能有两个,难道看它在流程上第一次出现在哪个表里??
刚刚接触c#和sql,请大神们详细解答下,谢谢啦

7个回答

qq_36675624
qq_36675624   2017.09.05 14:24

1.你的表里面没有约束吗,每一张表至少要有一个主键,可以去看看一些约束
2.B表要放A表的列,可以通过外键的约束做到,但是外键在主表中必须有主键(或者唯一键)约束
3.如果你两个表用外键连起来了,如果在多个页面要用到一些数据,可以把两个表用联合查询(join on)连接起来,在去筛选一下,就可以了
4.你要是用联合查询,lastdata这两张表随便放

嘿嘿,好好学,年轻人

Simor
Simor   2017.09.05 15:41

你可以把同一个字段设置成外键,这样更方便查询,或者你创建一张中间表进行操作

D2012LY
D2012LY   2017.09.05 15:50

create table A
(
A_Id int primary key ,
A_Name nchar(10),
A_Sex nchar(10)
last_date date
)
create table B
(
B_Id int primary key,
A_Name nchar(10) ,
B_dept nchar(10),
FOREIGN KEY (A_Name) REFERENCES A(A_Name)
)

KevinSilent
KevinSilent   2017.09.05 23:35

可以,多个表可以共用一个表的某一列数据(域),只需要把这列中的数据与其他表的建立外键约束关系就可以了,
就拿你举得例子来展开,假如要公用A的A_Name这列,具体实现代码如下:
create table A
(
A_Id int ,
A_Name nchar(10) primary key ,
A_Sex nchar(10)
)
create table B
(
B_Id int,
B_Name nchar(10),
B_dept nchar(10),
foreign key(B_Name) references A(A-Name)
)
这样的话b表中的b_name这列的数据在你进行相关处理的时候必须与a中的数据保持一致,如果不一致的话编译的时候就会报错,
需要注意的是建立外键约束的时候定义的相关变量数据类型必须完全一致,而且所公用的那列数据必须设置为主键。希望能解决
你的问题。

qq_40090700
qq_40090700   2017.09.06 09:36

你这个我不知道是想创建表的时候,让你的表b中有表A的字段还是什么,如果是创建就是外键引用主键,如果是查询就很简单了

weixin_39892922
weixin_39892922   2017.09.06 18:48

你的描述很乱,自我感觉你只要用外键就很简单

qq_35491254
qq_35491254   2017.09.08 11:40

B表 用A表的主键关联就可以了, 感觉你是想做一个 流水记录而已

Csdn user default icon
上传中...
上传图片
插入图片