架构师-创建表结构的时候,需要创建外键吗?

问题描述

创建表结构的时候,需要创建外键吗?

有的同事说,不创建外键,因为容易出错.
我觉得只要表结构正确,为什么会出错呢?

解决方案

建议不要使用关联。
主要是我们不建议你真正去从数据库中删除数据,而是通过一个字段标记实现伪删除。
这样的好处是,数据可以追溯。
回到你的问题,表之间有了关联,涉及到级联删除的问题。如果外键的数据被删除,另一侧的数据全部需要级联删除。这是不推荐的。

解决方案二:

不建议外键,尤其涉及修改和删除的时候。可以自己建几张表测试下,违反外键约束常有的事

解决方案三:

一般不弄,麻烦,而且现在使用的删除不再是delete,而是逻辑删除

解决方案四:

如果涉及到级联操作,最好就用外键吧

时间: 2024-10-04 11:49:32

架构师-创建表结构的时候,需要创建外键吗?的相关文章

解析SQL 表结构信息查询 含主外键、自增长_Mysql

最近项目需要做什么数据字典,需要表结构信息.在网上看了许多关于表结构信息的查询,感觉都不怎么样.相对好一点就是<基于SQL2005 SQL2008 表结构信息查询升级版的详解(含外键信息)> ,但是这里有一点小问题,缺少一个过滤以致运行有一点小bug.在AdventureWorks2012数据库中的Address表查询结果如图:在查询过滤中我们添加以下信息就ok了:AND g.class_desc = 'OBJECT_OR_COLUMN'修改后的SQL如下: 复制代码 代码如下: SELECT

关系数据库设计中,用中间表好还是直接设定主外键关联好?

有人会对数据库有这样的疑问: 因为大多数的数据库教程上都是告诉你关系数据库如何去创建1:1.1:N和N:M的数据库关系,但我发现很多开源产品中,并没有直接使用关系数据库的关系查询.关系删除等功能,而是直接在代码中对多个表的查询结果进行组合. 这两种方式的优缺点是什么呢?为什么很多项目都选择后者呢?在一个中型以上的项目实践中,我该选择哪种方式,或是两种方式结合使用? 我想: 1,数据表与数据表之间有关联(Relationship)是肯定的,但是不一定要用外键(Foreign Key),为什么?外键

创建表,创建行,创建列(VB.NET)

创建 Dim dt As New DataTable dt.Columns.Add(New DataColumn("UserID")) dt.Columns.Add(New DataColumn("IPP")) Dim dr As DataRow = dt.NewRow dr.Item("UserID") = "324" dr.Item("IPP") = "210.74.232.26:3824&q

探讨SQL利用INFORMATION_SCHEMA系统视图如何获取表的主外键信息_Mysql

接着上篇文章<解析SQL 表结构信息查询 含主外键.自增长>里面提到了INFORMATION_SCHEMA视图,其实到了SQL 2005微软都主推大家使用INFORMATION_SCHEMA系统视图,而不是在使用sys东东了,当然目前还是有许多信息只能通过sys视图来查询.这里我们还是以查询表结果信息为例来说明一些主要的INFORMATION_SCHEMA视图的使用.首先我们需要查询列的信息,这需要用到[INFORMATION_SCHEMA].[COLUMNS]系统视图来查询数据列的信息,SQ

架构师-如何创建一个不容被修改的数据库表结构?

问题描述 如何创建一个不容被修改的数据库表结构? 我想学习创建数据库表结构,但是不知道如何下手,求大神解答 刚才的问题有歧义,我修改了下. 然后声明下: 我会用数据库建模工具 我就是不太明白如何创建一个好的数据库结构,一个不容易被修改的结构,一个高效的结构 -------------------分割线----------------------- 如果让你们创建表结构你们如何创建呢?求思路~ 解决方案 不存在什么不容易被修改的表结构.首先你的程序决定了修改还是不修改. 如果你不信任你的程序,你可

Mybatis自动创建表和更新表结构_java

最近有小伙伴问我mybatis有没有自动创建表结构的功能,因为他们之前一直使用hibernate用习惯了,理所当然的认为,在实体类上配置下注解或者写写映射文件,系统启动后就可以自动创建表. 我只能很遗憾的告诉他,mybatis并没有这个功能,看他兴致阑珊的样子,我只能安慰他,就算没有这功能,我们可以自己开发啊~~ 所以就有了下面这套系统,已开源大家可以下来看看~~ Mybatis_BuildTable_V0.2 https://git.oschina.net/sunchenbin/Mybatis

新手求解 怎么在mysql中创建多级表结构

问题描述 新手求解 怎么在mysql中创建多级表结构 比如说我要创建一个如下的表结构,该用什么语句,, 类似这种多层结构 解决方案 MySQL创建表结构里面的那个长度对于整型的作用 解决方案二: 多级表结构?使用外键吧! 解决方案三: 数据库里变是没有多级表结构的,你想要实现多级结构,需要通过多表关联.外键关联等操作来实现. 或者在同一个表中,通过字段id和parentId等关系进行区分.

mysql在线修改表结构大数据表的风险与解决办法归纳

整理这篇文章的缘由: 互联网应用会频繁加功能,修改需求.那么表结构也会经常修改,加字段,加索引.在线直接在生产环境的表中修改表结构,对用户使用网站是有影响. 以前我一直为这个问题头痛.当然那个时候不需要我来考虑,虽然我们没专门的dba,他们数据量比我们更大,那这种问题也会存在.所以我很想看看业界是怎么做的,我想寻找有没有更高级的方案,呵呵,让我觉得每次开发一个新功能,我在线加字段都比较纠结.后来只知道,不清楚在什么时候,无意中看到一个资料介绍online-schema-change这个工具,于是

看实例学VFP:用sql命令创建表

本文是一个在vfp中使用sql命令创建表的实例.用sql命令创建表结构的格式如下: create table 表名 (字段名1 类型(宽度[,小数位]),字段名2 类型(宽度[,小数位]),-) 在看实例学VFP:示例数据库一文中已经给出了"网站信息表"的表结构如下表: 字段名 类型 宽度 编号 字符型 5 网站名称 字符型 12 网站网址 字符型 24 那么我要创建相同的表结构并且表名为"网站信息表2"的sql命令如下: create table 网站信息表2 (