What I’ve thought about here is using the ID from the junction table ‘pricelist_products’ as a foreign key within the prices table, but this feels really…. hacky?

也许这里的问题只是一个观点.联结表的目的是在多对多关系中唯一定义每个组合(最初:pricelist到product).这可以在具有字段product_id和pricelist_id的联结表中实现,并且没有代理键id.

当然,如果您使用PRIMARY KEY(product_id,pricelist_id)定义了联结表,则此表将无法在考虑价格时唯一定义组合.因此,您将第三个ID添加到联结表.在定义仅两个表之间的关系时,您似乎将此字段视为必要的代理键.但是,由于此字段的实际效用与第三个表相关,因此您可以将其命名为price_id,将联结表命名为pricelist_product_price,并在所有三个字段上定义主键(例如).这更清楚地说明了每个领域的目的,因此在实践中可能不会感到“hacky”.

我不知道这是否是数据库设计的最佳实践,但请记住,没有理由必须完全规范化每个数据库.您需要具有合理数量的灵活性和可扩展性的良好性能(这对于休闲博客来说意味着一件事,对于小型企业来说则是另一回事),并且通常可以通过某种程度的非规范化设计来实现.

编辑补充说:好的,还有一个我忘了提及的改变将属于“好”的设计或最佳实践.在您的图片中,价格表中有两个ID字段,其中一个就足够了.正如@Gilbert Le Blanc指出的那样,你应该尽量避免模糊的字段名称,比如有多个id字段,即使它们在不同的表中.这将帮助您查看字段的实用程序,识别自然键并消除冗余.

mysql创建三个表相互关联_mysql – 在三个表之间创建关系相关推荐

  1. mysql两表左关联_mysql中一张表LEFT JOIN 左关联两张表语句

    先看实例 代码如下 复制代码 SELECT p.price, pd.name, m.manufacturers_name FROM (products p LEFT JOIN products_des ...

  2. mysql中数据表如何关联_mysql 如何导入/导出2个关联表中的数据

    mysql 怎么导入/导出2个关联表中的数据 表一 id student 1 S1 2 S2 表二 id sid scord order 1 1 100 1 2 1 60 2 3 1 80 3 4 2 ...

  3. mysql分库分区分表怎么做_mysql 分区、分表、分库分表。

    一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具体请看:mysql分表的3种方法 什么是分区,分区呢就是把一张表的数据分成N多个区块,这些区块可以在同一个磁 ...

  4. MySQL简单表的数据_MySQL(二)表的操作与简单数据操作

    六大约束:主键约束.外键约束.非空约束.唯一约束.默认约束.自动增加 1.not null非空 2.defaul默认值,用于保证该字段的默认值 ; 比如年龄:1900-10-10 3.primar k ...

  5. mysql 中间表的好处_Mysql中使用中间表提高统计查询速度

    对于数据量较大的表,在其上进行统计查询通常会效率很低,并且还要考虑统计查询是否会对在线的应用产生负面影响.通常在这种情况下,使用中间表可以提高统计查询的效率, 下面通过对session 表的统计来介绍 ...

  6. mysql 分表后排序_MySQL优化分库分表,为什么要分表,分表以后如何进行排序查询,业务如何设计?...

    昨天面试新人的时候,遇到了这么一个问题,按照自己的想法大体聊了一些,但大多是感性的,并没有完整的了解why and how. 今天查了一些相关的资料,包括<MySQL性能调优与架构设计>. ...

  7. mysql 吧库下的表名都加_MySQL 数据库名、表名、字段名大小写敏感记录

    问题如下: 比如上图中的PERSON表,查询SQL语句中如果表名是小写,就会报错说person表不存在. 因为Linux环境下的MySQL数据库的表名默认是区分大小写的,可以查看Linux上的MySQ ...

  8. mysql删除表编码字段_mysql 修改 添加 删除 表字段

    mysql 修改 添加 删除 表字段 添加表的字段 alter table 表名 add 字段名 字段的类型 例子: alter table table1 add transactor varchar ...

  9. mysql如何两个表取差集_mysql 查询两张表的差集

    今天在做一个小功能的时候,遇到了需要取两个表的差集,本来可以直接通过两次查表然后通过代码去处理. 由于我个人比较喜欢减少数据库交互,所以在网上查了下关于mysql两个表取差集的方案.但是发现很多的 差 ...

最新文章

  1. java 解析证书_java 读取证书类以及key tool gui 1.7
  2. IOS的UI基础02
  3. 怎么看java中ide_如何在eclipse IDE中查看Java的字节码?
  4. 关于js的回调函数的一点看法
  5. 微信小程序页面跳转的方法
  6. C语言 | 内部与外部函数
  7. [vue] 说说你对vue的mixin的理解,有什么应用场景?
  8. java解压缩.zip文件
  9. 安卓蓝牙键盘切换输入法_超薄无线蓝牙双模罗技K580键盘,自由切换享受打字快乐...
  10. swift可选隐式可选类型
  11. 【UVA524】Prime Ring Problem(素数环--递归回溯+全局变量的一个小坑点---水题)
  12. 大数据用户画像方法与实践(干货 转帖)
  13. python中度数怎么表示_python中如何将华氏温度转换为摄氏温度?
  14. html给图片坐标没连接,4-HTML中的 a, img/标签使用及锚点,路径相关
  15. c语言偶数求和while,C语言中编程计算1至100以内的奇数和偶数并分别求和,求代码...
  16. 电脑b站html加速播放,b站视频怎么加速播放-将B站视频调速播放的方法 - 河东软件园...
  17. 最少的脚本实现在NSH脚本作业中加入动态参数
  18. R WinBugs network meta analysis
  19. otg android 键盘,使用USB OTG将手机、平板连上键盘、U盘
  20. Allegro 异形焊盘的制作方法

热门文章

  1. android音频文件存放目录,Android系统声音文件目录
  2. Centos8安装Oracle12C未能初始化安装程序
  3. 通过经纬度坐标计算距离
  4. Oracle表中序列号的添加
  5. 【弹吉他必备的乐理知识】【1】音乐中的音
  6. windows server 2012 r2 搭建企业文件共享存储
  7. 程序员专属表情包,正在疯传中!
  8. R6034错误的解决(转)
  9. 云计算技术 — 多云
  10. 用python处理excel 数据分析_数据分析---用python处理excel