当前位置:首页 » 数据仓库 » 数据库外键设计
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

数据库外键设计

发布时间: 2023-07-15 02:14:02

数据库语句怎么加外键

1、以具有 DBA 权限的用户身份连接到数据库,执行 ALTER TABLE 语句,将表定义更新为包括外键定义。创建一个名为 Skills 的表,其中包含潜在技能列表,然后创建一个与 Skills 表具有外键关系、名为 EmployeeSkills 的表。

❷ 微服务 数据库 怎么设计外键关联怎么搞

为已经添加好的数据表添加外键:
语法:
alter table 表名 add constraint FK_ID foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
例:

alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id)

//FK_ID是外键的名称
/*
CREATE TABLE `tb_active` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `user_id_2` (`user_id`),
CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
*/

sql数据库设计规范及如何设置外键

20个数据库设计最佳实践: 使用明确、统一的标明和列名,例如 School, SchoolCourse, CourceID。 数据表名使用单数而不是复数,例如 StudentCourse,而不是StudentCourses。 数据表名不要使用空格。 数据表名不要使用不必要的前缀或者后缀,例如使用School,而不是TblSchool,或者SchoolTable等等。 数据库中的密码要加密,到应用中再解密。 使用整数作为ID字段,也许现在没有这个必要,但是将来需要,例如关联表,索引等等。 使用整数字段做索引,否则会带来很大的性能问题 。 使用bit 作为布尔字段,使用整数或者varcha是浪费。同时,这类字段应该以“Is”开头。 要经过认证才能访问数据库,不要给每一个用户管理员权限。 尽量避免使用“select *”,而使用“select [required_column_list]”以获得更好的性能。 假如程序代码比较复杂,使用ORM框架,例如hibernate,iBatis。ORM框架的性能问题可以通过详细的配置去解决。 分割不常使用的数据表到不同的物理存储以获得更好的性能。 对于关键数据库,使用安全备份系统,例如集群,同步等等。 使用外键,非空等限制来保证数据的完整性,不要把所有的东西都扔给程序。 缺乏数据库文档是致命的。你应该为你的数据库设计写文档,包括触发器、存储过程和其他脚本。 对于经常使用的查询和大型数据表,要使用索引。数据分析工具可以帮助你决定如何建立索引。 数据库服务器和网页服务器应该放在不同的机器上。这回提高安全性,并减轻CPU压力。 Image和blob字段不应该定义在常用的数据表中,否则会影响性能。 范式(Normalization)要按照要求使用以提高性能。Normalization做的不够会导致数据冗余,而过度Normalization 会导致太多的join和数据表,这两种情况都会影响性能。 多花点时间在数据库设计上,否则你将来会付出加倍的时间来偿还。设置外键:方法一:SQL语句alter table 表名 add constraint 外键名 foreign key(字段名) references 主表名(字段名) on delete cascade方法二:不想写sql 语句也可以直接用图形化操作 选择你要创建外键的表,反键选择修改表,点击

❹ 关于django数据库设计,双表互为外键

数据库设计是整个设计最基础的部分

1、django app的设计:根据系统的需求分析来设计django的app,django的开发是基于app来开发的,所以第一步就是设计app。

2、各appmodel的设计:也就是设计对应的数据表

3、数据表的生成以及修改

使用在线教育系统作为实例:

userprofile的设计:在任何一个系统中,user表都是第一个被设计的,django会产生几个默认用户数据表

在设计我们自己的user表的时候,我们希望能生成自己的表又希望能够继承django的默认表,此时,我们可以继承AbstractUser(

from django.contrib.auth.models import AbstractUser

class UserProfile(AbstractUser):
pass
定义完UserProfile表之后,我们需要在setting.py文件中注册users app,INSTALLED_APPS = [

'users',
]
并且定义一个方法AUTH_USER_MODEL = "users.UserProfile",注意这里是使用users.UserProfile而不是users.model.UserProfile
(1)user model的设计:
我们在设计django app的时候,每个app中都有model,model文件中很有可能用到其他app文件当中的model,这就会很容易引入循环引用的问题,为了解决这个问题,很常用的一种方法就是使用分层model的方法,也就是上一层可以引用下一层
的model,如下:

注:PEP8的在引入的规范是第一个区域是导入Python自带的包,然后隔一行的第二个区域是第三方的包,如django,然后隔一行的第三个区域是我们自己定义的一些model

(2)coursemodel的编写:一个数据可能和另一个数据是一对多的关系,但是一张表存储不了这种关系,所以就需要把这两个数据分别存储在不同的数据表当中,这样就会引入外键的关系。

model的FileFIield,定义了这个字段就可以在后台系统中生成上传文件的按钮

(3)oganizationmodel的编写:

(4)operation的model编写:

所有的APP编写完成之后,我们可以建立Python的apps包,把所有的app都放到这个apps中,把所有的APP放到apps之后,会发现各个app的model的引用可能会出现红线,说明我们找不到这些引用的包,所以需要我们在setting.py文件当中
把apps加入Python的搜索目录之下,
import syssys.path.insert(0, os.path.join(BASE_DIR, 'apps'))