mysql - 将外键与父级关联的最佳方法
问题描述
我根本不涉足 SQL 设计,所以这可能是一个微不足道的问题。
我有一张players
桌子:
CREATE TABLE players(
p_id INT NOT NULL PRIMARY KEY,
p_name VARCHAR(150) NOT NULL
)
我有一张results
桌子:
CREATE TABLE results(
f_id INT NOT NULL PRIMARY KEY,
f_datetime DATETIME NOT NULL,
p1_id INT NULL,
p2_id INT NULL,
FOREIGN KEY (p1_id) REFERENCES players(p_id) ON DELETE SET NULL ON UPDATE SET NULL,
FOREIGN KEY (p2_id) REFERENCES players(p_id) ON DELETE SET NULL ON UPDATE SET NULL
)
当我将 an 添加INSERT
到results
表中时,我正在添加p1_id
and p2_id
。为此,我需要已经在players
表中定义了这些 id,并带有此 id 的随附字符串名称。以编程方式,在添加到表之前我应该如何处理我的数据results
?
- 检查是否
p_id
存在(来自我的p1_id
和p2_id
值),如果不存在,则INSERT
使用随附的字符串。 - 将我的数据作为普通插入添加到结果表中
或者有没有更传统的方法来做这些事情?也许一些我不知道的 SQL 怪癖?
解决方案
推荐阅读
- node.js - NodeJs:无法在 AWS Lambda 环境中生成 Exiftool
- php - Codeigniter 动态 url 路由映射到变量
- xaml - 文本未显示在带圆角的文本框中
- php - 为什么这个正则表达式只匹配模式的最后一次出现
- apache-kafka - 是否有任何api可以在kafka中找到分区是否平衡
- javascript - 在某些条件下在 index.html 中运行脚本
- eclipse - Eclipse git 没有更多可用的身份验证方法
- windows - 脚本结束后删除文件夹
- openrefine - 有没有办法在 GREL 中合并 2 个数组
- android - Android gradle exclude 无法按预期工作