表的查看:https://www.cnblogs.com/niewd/p/11481030.html
数据库表格设计一般使用PowerDesigner软件进行设计,先生成逻辑模型,最后逻辑模型转换为物理模型,物理模型导出为sql语句,然后用命令行进入mysql,执行. D:\chrome\Sybase\permission.sql语句,将sql文件生成表格,最好在反向迁移至django模型。逻辑模型一般主要设计表格的字段及主外键设置及一对多多对多关系的设计。物理模型主要设计自增,及唯一性等外键约束。命令行主要创建数据库及切换至数据库。将表格反向迁移至django中的model中后,需要重新添加每个表格的一对多及多对多关系。其具体操作如下。
1逻辑模型
先安装PowerDesigner165软件然后打开软件;
1.1表格设计
1.点击左边框中的workspace 然后点击new,在点击logical data model 进入逻辑模型层设计。
2.点击右边的logical diagram中的entity然后再工作区左键点击,然后右键选择attributes进入设计表格的字段。各项参数意义如下。
name为给字段作注释(可以不写),code为字段,data type为类型;mandatory为必须填内容的约束,general中name为表名注释,code为表名。
3.设计好字段后,进入关系设计,关系设计位于右边的logical diagram;其中entity 新建逻辑模型表格,relationship一对多逻辑模型,n-n relatisonship多对多逻辑模型(多对多关系可以随便由一个表格指向另一个表格,而一对多关系只能由主表指向从表)
通过上面几步就完成了逻辑模型的设计,下面进入物理模型层设计
2物理模型
需要先由逻辑模型转物理模型。
在tools中选择generate physical data moodel 然后改为mysql5.0
preview可以查看生成的物理模型的sql语句。
2.1给id加自增操作
双击生成后的物理模型 点击columns, 点击id对应的第一列并双击,然后勾选identify并应用确定
2.2设置唯一约束
加唯一性约束:在物理模型中双击,点击indexs,然后在下面添加唯一性约束的字段,在选择unique选择框;在移动到最左边的编号,然后双击在选择columns,点击带有加号的表格的图标
在弹出的对话框里选择要设置唯一性约束的字段。点击应用和确定即可。
2.3导出物理模型
当我们将约束语句加好后,就需要将物理模型导出为sql文件。
在database中选择generate database,并选择导出位置及文件名,就可以进行导出了。查看sql语句及导出都是在物理模型中进行;转换成sql语句后,布尔类型在sql语句中将会转换成int类型。
2.4逻辑模型与物理模型的切换
逻辑模型与物理模型之间切换find in diagram/databases
当我们需要给表格新增字段,需要在逻辑模型加字段,然后在tools中在更新一次物理模型。
3数据库操作
当导出为sql文件后,我们需要执行sql语句,进入cmd命令框。输入mysql -uroot -p
然后输入密码。
执行语句create database *** default charset utf8;
然后use ;切换至新创建的数据库。
然后执行. D:\chrome\Sybase*.sql将会将sql语句执行,在数据库中创建表格。
show databases;查看所有数据库,use u17;切换至u17数据库,show tables;查看u17数据库下所有表格。desc user;查看user表格的表格结构,select * from user;查看user表格中的所有信息。
4django中反向迁移
所谓反向迁移,意即将数据库中的表格反向迁移至django中的model中生成对应的class。
先创建好django模型,在settings中配置好,数据库的相关信息,在工程文件的init文件中加入import pymysql;pymysql.install_as_MySQLdb()。新建app后。
在命令框中执行以下语句,将会在对应app的model中生成对应的模型文件
python manage.py inspectdb > app名字/models.py
如果需要使用django中自带的10张表格,需要先运行python manage.py migrate将表格迁移至数据库后,在执行反向迁移语句。
迁移后的表格中的一对多及多对多关系将全部缺失,故需要自己将关系模型全部添加ManyToManyField()及oneToManyField()关系(如下)至class的字段的最后一行。
lessons = models.ManyToManyField(Lession, through='StudentLession')
其中一对多及多对多关系中的through用于指定对应的哪个类。
一对多及多对多中添加数据时。先用类创建实例,在分别给实例的字段添加对象,最后保存实例。
网友评论