这部分内容对我来说是新知识
PowerDesigner16.5大概700M,下载安装并破解。
创建一个model并将DBMS选择为mysql
自己规划数据库数据表如下图示例
默认PowerDesigner没有comment这个列需要自己手动添加
按ctr+U唤出如下图所示窗口,添加comment列
然后
将下面的代码copy到上面的窗体,运行
Option Explicit
ValidationMode = True
InteractiveMode = im_Batch
Dim mdl ' the current model
' get the current active model
Set mdl = ActiveModel
If (mdl Is Nothing) Then
MsgBox "There is no current Model "
ElseIf Not mdl.IsKindOf(PdPDM.cls_Model) Then
MsgBox "The current model is not an Physical Data model. "
Else
ProcessFolder mdl
End If
' This routine copy name into comment for each table, each column and each view
' of the current folder
Private sub ProcessFolder(folder)
Dim Tab 'running table
for each Tab in folder.tables
if not tab.isShortcut then
tab.comment = tab.name
Dim col ' running column
for each col in tab.columns
col.comment= col.name
next
end if
next
Dim view 'running view
for each view in folder.Views
if not view.isShortcut then
view.comment = view.name
end if
next
' go into the sub-packages
Dim f ' running folder
For Each f In folder.Packages
if not f.IsShortcut then
ProcessFolder f
end if
Next
end sub
然后把自己创建的一堆model创建为*.sql文件
注意文件编码格式,PowerDesigner和phpmyadmin中的格式需要保持一致
成功导入以后的提示信息
效果如下图所示,哈哈开心吧
上述内容是是使用工具创建.sql文件并在mysql的图形界面phpmyadmin上创建数据结构的过程,相当于过去的劳碌的工作也变成了文件、变成了.sql文件,变成了一个代码的作品,记录一下没有白干。
按照上述做法,可以通过重复的工作,创建整个数据库结构。但是我们的系统是需要重构数据结构,并数据迁移的,因此我们来讨论一下,数据库,怎么改?
- 数据库实体Entity
旧系统实体太少要扩充,比如,版本的概念。
plm中对版本的实现是这样的1:N设计,物料和带有版本的物料是1:N的关系。
旧系统中,体现物料这个实体的有两个表:材料检验表(物料级别)和检验表(条目级别),其中前者通过Matnr+Version作为物料的唯一标识,后者通过Matnr+序号唯一标识一个条目。
材料检验表:物料1:N版本 (1个物料有N个版本)
检验表:物料1:N版本:N*M条目(1个物料有N个版本,1个版本有M个条目)
现在我们修改一下,将两个实体,扩展为三个实体:
物料表(MARA) 物料号Matnr作为唯一标识。MARA中只存储非常非常少的字段,比如3个字段。matnr ename 和 msn,这个表就是要简洁明了。根据plm中的概念(我听说的)从外部界面无法直接感知MARA,只能感知MARC。
物料版本表(MARC) 与MARA是聚合关系,一对多。这个表中体现版本等信息,目的在于,同一个物料编码的不同版本,对应的物料信息,可能完全不一样。比如换了供应商,比如材质,比如彻底就不一样了,这很有可能。MARA的msn作为MARC的外键,用来建立两个表的关联。MARC中主键为vsn,MARA的msn作为MARC的外键。
条目(ITEMS)
主键为isn,外键为vsn。
据说这样可以防止数据冗余。
上述说法,是错误的,原因是在入库检验系统中,物料是没有版本的。这个是因为入库检验中物料的数据来源是SAP中的MM模块中收货相关的报表数据,而我们公司中SAP系统的物料本身就没有版本。
SAP的物料数据来源是PLM,PLM中的物料有版本,但是升版本就必须改变物料号。既然数据源中物料的版本就是一个象征,那么入库检验的时候,物料版本是没有意义的。
对于入库检验系统,物料的意义就是一个编号,关联了待检单和检验标准。
物料----检验标准----检验条目
物料MARA : mSn(PK) 物料编码(M) 物料信息
检验标准StandardMatnr : sSn(PK) 物料编码(FK M) 版本(M)
检验条目StandardItem : iSn(PK) sSn(FK M)
物料和检验标准的关系 1:N
检验标准和检验条目的关系 N:N*M
目前对数据库的规划如下所示
上述内容还要继续修改,字段长度之类的
下面hibernate tools