对不起,如果这个问题可能是非常基本的(甚至愚蠢),但我不是很熟练的mySQL。然而,我需要为我的硕士论文创建一个数据库,所以我想确保它是最"优雅"和正确的。
我有一个数据集,其中包含许多具有相对信息的并购交易(dealid + 12列)。我需要补充交易行业的信息。然而,这些信息来自3个不同的数据库,这些数据库适用于M&A的子集:有些交易有一种分类,有些有另一种,有些有另一种。
就我所知,我有两种选择:将所有交易表集成或将其分成4个表(一个用于交易,另一个用于不同的分类),具有1-1关系。在第一种情况下,我将有一个超过50列的表,但第二种方法看起来不太好。
这些方法有意义吗?还是有其他我不知道的方式?
编辑:现在我有4个excel表,我想导入mySQL。主表是"deal"表:它有主键"dealid"和其他列,如"parentname"、"targetname"等。到目前为止,我还有3个表,每个分类一个。主键还是"dealid",但是每个表都有特定的列(大约15列),因为每个分类都有不同的特征(如NACE代码、NACE代码描述、行业部门、SIC代码等)。
一般来说,您应该以更小、更简单的表为目标,然后您可以用许多不同的方式组合这些表。
https://en.wikipedia.org/wiki/Database_normalization如果有必要,你可以使用join, VIEWS和其他有趣的东西来把你需要的特定需求的信息聚集在一起。
在您的情况下,您应该特别是有不同的表,然后将它们组合在一起。
为什么?关系数据库的设计目的是处理不同表中的数据。一般来说,单个表包含单个"实体",而实体之间存在关系。你在问题中明确定义了多个实体——"交易"one_answers"行业"。从这个问题来看,我不确定最好的解决方案是2、3还是4个实体表,但显然不止一个。
接下来,当您实现它们时,您希望有连接它们的键。我强烈建议在每个表中使用一个自动递增的主键,并将其用于关系。
下面是一个定义表的概念示例:create table industries (
IndustryId int not null autoincrement primary key,
IndustryCode varchar(10),
. . .
);
create table deals (
DealId int not null autoincrement primary key,
IndustryId int,
. . .,
constraint fk_deals_industry foreign key (IndustryId) references Industries(IndustryId)
);