0

我对 PHP MySQL 还比较陌生,并要求自己学习“动手”方法。幸运的是,我目前有一个(非常)大的数据库,所有数据库都与硬币数据相关,并有一张表可供使用。它目前具有以下列(每一行代表一个项目 [coin]):

Group
ItemNo
ListNo
TypeCode
DenomCode
PeriodCode
ActualDate
SortDate
CostPrice
SalePrice
Estimate
StockLevel
DateEntered
DateSold
Archived
ArchiveWhenSold
Highlight
KeepSold
OnLists
NotForSale
Proof
StockItem
OnWeb
Cats
Ref1
Ref2
Variety
Picture
Description
TypeName
TypeHeading
DenomName
DenomHeading
DenomValue
PeriodName
PeriodHeading
PeriodStartYear
PeriodEndYear

新表的分组比较明显:

时期:

PeriodCode
PeriodName
PeriodHeading
PeriodStartYear
PeriodEndYear

面额:

DenomCode
DenomName
DenomHeading
DenomValue

类型:

TypeCode
TypeName
TypeHeading

所有其余的,在硬币表下:

Group
ItemNo
ListNo
TypeCode
ActualDate
SortDate
CostPrice
SalePrice
Estimate
StockLevel
DateEntered
DateSold
Archived
ArchiveWhenSold
Highlight
KeepSold
OnLists
NotForSale
Proof
StockItem
OnWeb
Cats
Ref1
Ref2
Variety
Picture
Description

所以我希望将表格规范化为指定的表格。我知道我正在查看 JOIN,但我想知道最好的方法。我是否首先使用每个数据组(Denom、Period、Type)创建一个新表,然后使用 JOIN 语句插入数据?或者有没有办法使用 JOIN 语句“即时”创建新表。我在这里打开了一本很棒的书,并且很好地遵循了有关 MySQL 的部分并浏览了该站点,但无法找出“正确”的方法来做到这一点。

我在这里要求一些知识渊博的建议的原因是我有点不确定如何维护“关系”和键等。即,如果我创建一个名为“Denom”的表并用所有不同的项目填充它当前表数据并让它创建一个唯一的主键,然后我如何将 Denom 表中对这个新主键的引用插入主 Coin 表(在新项目 DenomID 下),以便它们匹配?

我基本上需要将此表拆分为 4 个单独的表。我已经使用 Access 2007 的表分析器向导进行了尝试,对于像我这样的 n00b 来说,它看起来很有希望,但是数据太多,它实际上崩溃了。反复。可能是最好的,但现在我需要知道一些最佳实践,以及如何将其付诸实践。任何建议/帮助/相关链接将不胜感激。

4

1 回答 1

0

首先创建表,不要忘记在所有包含主表主键的子表中添加一个外键字段(每个新表都必须获得一个主键),以便您可以加入表。如果您没有主键,则需要先创建一个主键,然后再执行其他任何操作。

将数据放入表中是一个简单的插入

insert tableb (field1, field2)
select field1, field2 from tablea

您将加入以获取数据库,因此请记住在新表上创建索引,尤其是在外键字段上。

于 2009-11-24T15:53:10.737 回答