当前位置: 首页 > 知识库问答 >
问题:

sql workbench上的独立表而不是单个表

宫修贤
2023-03-14

我可能有个老生常谈的问题,但我需要一个建议。

我正在为一个中心的DBMS工作,在那里有两种不同类型的客户:让我们称它们为Customer普通和CustomerSpecial。

当然,他们有共同的属性,比如名字,姓氏,出生日期...然后customerSpecial具有Customer普通没有的属性,反之亦然。

然后,customerSpecial和customerSpecial连接到不同的表:customerSpecial连接到table1,而customerSpecial连接到table2和table3

在这一点上,知道了这一点,我有两种可能的方法:

方式一:

创建具有所有公共属性的单个表“Customer”,然后创建具有相同PK和其他列的其他两个表customerS和customerO。

CUSTOMER
ID     DATEOFBIRTH.  NAME.   SURNAME.   TYPE
01.    1989/07/12.   Sal.     Dallow.    S
02.    1987/09/12.   Kreb.    Krusty.    O
03.    1999/01/02.   Josh.    Milly.     S

CustomerO
ID.      NumberOfCr.   .....
02.       18273.       .....

Customer S
ID.     DateAsmp.    DateEnd.     TypeCon
01.     2020/12/12.  2021/10/07.    STN
03.     2020/11/22.  2020/12/30.    PLS

方式2

直接创建两个不同的独立表CustomerO和Customers:

CustomerS 
ID     DATEOFBIRTH.  NAME.   SURNAME.  DateAsmp.    DateEnd.     TypeCon 
01.    1989/07/12.   Sal.     Dallow.  2020/12/12.  2021/10/07.    STN
03.    1999/01/02.   Josh.    Milly.   2020/11/22.  2020/12/30.    PLS


CustomerO
ID     DATEOFBIRTH.  NAME.   SURNAME.   NumberOfCr.  
02.    1987/09/12.   Kreb.    Krusty.   18273.

你认为我应该遵循哪种方法?为什么?最重要的是,第一种方法在某种程度上是不正确的?

共有1个答案

彭兴朝
2023-03-14

这个问题取决于您是否需要与“客户”的外键关系。我猜答案是“是的”。

这表明第一种方法更好。如果“普通”和“特殊”客户不需要外键关系,可以考虑将所有列存储在同一表中--而不必担心null值。

 类似资料:
  • 当我试图将模式更改为“集群”时,它失败了。在web UI中,我看到驱动程序正在运行,但应用程序失败。 编辑的 在日志中,我看到以下内容: 16/03/23 09:06:46信息大师:注册ID为APP-20160323090646-0007的应用wibeee-pipeline 16/03/23 09:06:46信息主:启动执行人App-20160323090646-0007/0关于工人工人-2016

  • 问题内容: 我想为我的网站创建一个用户管理系统, 有什么更好的安全性和性能。 类型1: 或者 类型2: 哪一个更好 ? 问题答案: 理想情况下: 根本不存储密码(即使是加密的)。存储从密码派生的 哈希 。 给密码加盐以防止彩虹攻击。 将散列放在单独的数据库服务器上,位于其自己的防火墙和其定义良好的API 1之后。该API应该只做三件事: 对于给定的用户名,检索相应的密码哈希。 对于给定的用户名,设

  • 问题内容: 从Java 6 模式文档中: 特殊构造(非捕获) X X ,作为非捕获组 … X X ,作为独立的非捕获组 之间和有什么区别?在这种情况下, 独立 意味着什么? 问题答案: 这意味着分组是原子的,它会丢弃匹配组的回溯信息。因此,该表达式是所有格;即使这样做是正则表达式整体成功的唯一途径,它也不会退缩。它是“独立的”,即它不会通过回溯与正则表达式的其他元素协作来确保匹配。

  • 我想知道我是否可以在一台机器上运行多个独立的neo4j实例。我知道我可以将多个实例配置为HA集群(此处),但这不是我的意图,我只需要在我的机器上使用两个完全不同且独立的neo4j实例(如果有区别的话,这是一个Mac OSX)。这只是为了我的开发测试,我尝试了有两个不同的目录,有不同的,并为它们设置了两个不同的端口,但只有一个运行正常。 如果有任何帮助,我将不胜感激。谢谢你。

  • 我现在不知道如何写一个合适的方法来测试这种行为。请不要投反对票... 我现在有一个java类负责处理和向多个数据库添加数据。每个数据库保存相同的数据,但处理方式不同(例如,使用不同的插值速率进行插值)。 所以我运行程序(点击绿色矩形),修改参数(插值率)并运行程序。所以我有两个进程运行(因为大约。这就是为什么我不想冒任何中断的风险,担心数据库被搞砸了)。 我的问题是:这个修改是否适用于已经运行的进

  • 问题内容: 我有一个要解析的xml,进行了一些更改并将其保存到新文件中。它有我要保留的声明。当我保存新文件时,我失去了一点。我如何保留它?这是我的代码: 问题答案: 您可以将关键字参数传递给: