缘起
最近自己做点好用的小程序比较习惯用sqlite,sqlite目前个人觉得自己用特别方便,性能也可以,而且win也支持。我做数据库设计一般用PD(powerDesigner,官网:http://powerdesigner.de/en/),截止20200121看到也就是16.5的版本。但是在做数据库设计的时候,看到有2个大坑,具体如下:
- 设计好的表直接导入到sqlite数据库中。这个网上很多,已解决。
- PD没有对应的sqlite设计模型,具体是选用ODBC或者其他的如mysql, sqlserver2000,2005,2008之类的,也是问题较多。毕竟语法还是有较大差异的。无奈这个问题只能自己解决了,不过目前已经解决了,下面是详细的解决思路。
PD连接Sqlite的解决方案
- 安装Sqlite3 ODBC驱动,此处安装32位的,因为我的Powerdesigner(16.5)也是32位的,如果安装sqliteodbc-64位的,会找不到相关驱动的。此处需要注意。
需要32位和64位驱动,参见如下:
链接:https://pan.baidu.com/s/1QWmvwQCQPi1t9UlPch_cMA
提取码:azow - sqliteodbc-32安装。安装和其他安装一样,此处略!
安装之后,在PD中:【菜单】 → \rightarrow →【Database】 → \rightarrow →【Connect】,选择ODBC和Configure按钮。 在打开的【Configure Data Coneections】窗口中选择“Add Data Source”快捷键,选择【系统用户数据源】
在最下面就能看到已经安装好的“Sqlite3 ODBC驱动”,选择
创建PDM的时候选择ODBC3.0,就能连接sqlite的odbc数据源了。
PD的Sqlite的设计方案
问题
使用ODBC3+sqlite odbc可以把设计的数据表直接生成到sqlite数据库中。但是又出了一个坑,powerdesigner(我的版本16.5)没有sqlite数据模型,特别是使用到“自增长字段,主键”情况下,PD没有提供相关的DBMS模型选择。选用ODBC3模型时,字段属性中就没有identify这个选项,而且选择主键之后,语法也和sqlite的语法有差异。
无奈只能自己研究解决了。耗费了基本上是6-8小时,这个问题已经解除,有需要的朋友,可以从我的共享百度云中下载sqlite.xdb文件,Copy到:%PowerDesigner%/ Resource Files\DBMS,然后重新打开PD即可。
链接:https://pan.baidu.com/s/1UzJFsX7Wo83JNZuNFz9j7A
提取码:xdxb
解决后的Show
但是后面有个功能没有实现,具体如下:
1) 设置pk后,自动增加主键的唯一索引(UPK),这样能增强查询性能。
2) 增加/删除 index
这两个问题以后有时间再研究了,如果有完善好这2个功能的朋友,也请多多交流下。在此感谢了!!
解决之道
先查看了sqlite的建表语法如下:
create table Student
(
sId integer not null primary key autoincrement,
sCode varchar(50),
sName varchar(50)
);
网上推荐pd的sqlite建模是,选用odbc3,但是ODBC3模式的表设计中“字段属性”中没有identify这个选项,怎么解决?后来尝试从mysql .xdb上修改成了sqlite的建模模型,发现可以解决这个问题。修改后如下:
基本上生成column的语法就在这里,大家可以研究下。下面的就是index,或者key之类的。
OK! 目前先解决下这个问题,后面有时间再填其他坑了!