我的情况是正在执行2个表的连接。记录结构如下:
<person>
<name>person name1</name>
<dept>dept1</dept>
<dept>dept2</dept>
<dept>dept3</dept>
</person>
<person>
<name>person name2</name>
<dept>dept4</dept>
<dept>dept5</dept>
</person>
在这里你可以看到一个人可以属于1个以上的部门,所以一个名为person的表和一个名为dept的表将解决目的。
有没有办法可以在一张表中管理相同的数据?
我需要一种方法来建立一个数据库表,我可以使用可变数量的列来存储dept值。
RDBMS有没有办法实现这一目标? 我也很感激任何开箱即用的想法。
先谢谢
答案 0 :(得分:1)
你说:
在这里你可以看到一个人可以属于1个以上的部门,所以一个名为person的表和一个名为dept的表将解决目的。
三思而后行。如果人与部门之间的关系是owns
或visits
那么这不是一对多关系,而是多人关系,因为一个人可以拥有或访问多个部门和部门可以由多人拥有或访问。根据您的示例,这将转化为此(请参阅dept3
):
<person>
<name>person name1</name>
<dept>dept1</dept>
<dept>dept2</dept>
<dept>dept3</dept>
</person>
<person>
<name>person name2</name>
<dept>dept3</dept>
<dept>dept4</dept>
<dept>dept5</dept>
</person>
但是,当然,这取决于你没有提到的要求。
有没有办法可以在一张表中管理相同的数据?
我只能想到三种做法(一种比另一种更可怕):
我需要一种方法来建立一个数据库表,我可以使用可变数量的列来存储dept值。
任何RDBMS中的变量实际上不是列而是行,所以处理它总是很复杂。
RDBMS是否有办法实现这一目标?
任何主要的都可以。
我的意见?使用更多表格!这个解决方案会给你带来麻烦和很多麻烦!
答案 1 :(得分:0)
create table mytable(
record_id int(11) not null auto_increment,
ss_num int(9) not null,
firstname varchar(20) not null,
lastname varchar(20) not null,
middlename varchar(20),
deptid int(11),
deptname varchar(5),
primary key(record_id)
)
您可能不需要提供所有字段。所以根据需要进行编辑。