Java 外键在MySQL中的应用/效用是什么?

Java 外键在MySQL中的应用/效用是什么?,java,mysql,Java,Mysql,请允许我用一个例子详细说明这个问题。我在办公室写信 透视 (1) 字节码不应用于实现已经存在的逻辑 在数据库引擎中实现(希望更有效)(例如,如果 需要从500行SQL查询结果中筛选出20行, 我们应该写一个更好的where子句),而且 (2) 我只有一个概念 了解外键(例如,它们会自动创建、管理和执行 跨不同表维护数据完整性所需的约束) 现在,让我们考虑一个简单的模式,其中有4个表和15个列。 如下所示(假设所有列均不为空): 期望值(请回答以下6项的正确/错误) 可以使用外键如上所述创建表关系

请允许我用一个例子详细说明这个问题。我在办公室写信 透视

(1) 字节码不应用于实现已经存在的逻辑 在数据库引擎中实现(希望更有效)(例如,如果 需要从500行SQL查询结果中筛选出20行, 我们应该写一个更好的where子句),而且

(2) 我只有一个概念 了解外键(例如,它们会自动创建、管理和执行 跨不同表维护数据完整性所需的约束)

现在,让我们考虑一个简单的模式,其中有4个表和15个列。 如下所示(假设所有列均不为空):

期望值(请回答以下6项的正确/错误)

  • 可以使用外键如上所述创建表关系 指向同一表的不同行
  • 如果relof或relto为关系添加行,则会引发SQLException 在人们中是缺失的
  • 如果我们在地址中添加一行,则不需要检查z2cs中是否有zipcode- 缺少zip将引发SQLException
  • 如果在人员中使用了aid,则尝试从地址中删除行将引发异常
  • 如果在中的关系中使用pid,则尝试从人员中删除行将导致错误 列relto或relof中的任一列
  • 存在一条SQL语句,用于查找表中哪些列是外键 他们指的是哪个表(列)(我知道“描述表名”不起作用, 虽然我觉得应该)
  • 如果以上任何一个问题的答案都是错误的,你能引导我找到答案吗 MySql中外键的合同到底是什么。多谢各位

    附言:如果你对[6]的回答是正确的,你能分享一下那句话是什么吗

    奖金问题(与FK无关):

    如何为满足以下约束的关系表编写create语句:

  • relof和relto不能相同
  • relof和relto的组合是唯一的,即。, 如果它们是具有[relof=584,relto=7823]的行,则不能插入具有[relof=584,relto=7823]的另一行 [relof=584,relto=7823]或[relof=7823,relto=584]

  • 1。可以如上所述创建表关系,外键指向同一表的不同行

    否,FK只能指向一行。但是一行可以被很多其他行引用,比如一个地址可以被很多人引用

    2。如果人员中缺少relof或relto,则向关系添加行将引发SQLException

    3。如果我们在地址中添加一行,则不需要检查z2cs中是否有zipcode-缺少zip会引发SQLException

    4。如果在人员中使用了aid,尝试从地址中删除行将引发异常

    是,如果FK中没有级联删除,则会自动删除 加入人而不是失败

    5。如果在relto或relof列的关系中使用pid,则尝试从人员中删除行会导致错误

    是的,见第4条

    6。存在一条SQL语句,可以让您找到表中哪些列是外键,它们引用了哪些表(列)(我知道“描述表名”不起作用,尽管我觉得应该这样做)

    阿法克。MySQL中应该有一个信息模式,您可以从中查询信息

    B1。relof和relto不能相同

    在更新或插入时使用触发器来验证这一点。PostgreSQL知道检查约束,这可能在MySQL中也可用,但您可以选择触发器

    B2。relof和relto的组合是独一无二的


    这两列上的组合唯一索引是您的朋友。

    那么您将如何创建关系表呢?逻辑是记录同一表中两行的关系。它是否违背了一些关系数据库原则?那么,什么是AFAIK?据我所知,您的关系表非常好(AFAIK)
    people
        pid bigint autoinc PK
        fname   varchar(32)
        lname   varchar(32)
        dob date
        sex char(1)
        addyID  bigint FK to address(aid)
    
    relationship
        relof   bigint FK to people(pid)
        relto   bigint FK to people(pid)
        relis   tinyint
    
    address
        aid bigint autoinc PK
        street  varchar(128)
        zipcode int FK to z2cs(zip)
    
    z2cs
        zip int PK
        city    varchar(64)
        state   char(2)