gpt4 book ai didi

使用 phpmyAdmin 的数据库关系(复合键)

转载 作者:搜寻专家 更新时间:2023-10-30 23:23:45 25 4
gpt4 key购买 nike

我对制作一个好的关系数据库有点困惑。我正在使用 phpmyAdmin 创建数据库。我有以下四个表。不要担心地点和价格是可选的,它们只是可选的。

  1. 人(必填)
  2. 项目(必填)
  3. 地点(可选)
  4. 价格(可选)

Item是主表。它将始终与人联系。* 我知道你确实在 mysql 中加入了表。如果我想将表链接在一起,我可以使用复合键(使用每个表中的 ID),但这是链接表的最正确方法吗?这也意味着项目将有 5 个 id,包括它自己的。这一切都会导致空值(显然是一个很大的不,我可以理解)因为如果地点和价格是可选的并且不用于项目表的一个条目,我将在那里有一个空值。请帮忙!

提前致谢。我希望这是有道理的。

最佳答案

NULL 值

It also means item will have 5 ids including its own. This all cause null values (apparently a big no no, which I can understand) because if place and price are optional and are not used on one entry to the items table I will have a null value there

我个人认为这是 NULL 值完美的一种情况,我当然不会怀疑将其放入我的数据库设计中。

我看到其他人在没有 NULL 值的情况下实现同样的事情的一种方法是在可选表(示例中的位置和价格)中创建一个 ID 为 0 的记录,表示没有相关记录 - 但这只会让应用程序开发人员过滤掉这些记录的工作量增加 10 倍 - 进行连接要容易得多,如果您没有取回任何记录,则可选表中没有相关记录.

如果您想返回 Item,无论它们是否有 ,请记住执行 LEFTRIGHT OUTER 连接PlacePrice 关联(对于没有关联的 Item,您将在可选表列中获得 NULL 值记录)和一个INNER连接,如果你想要确实Item有一个关联的可选记录。

复合键

复合键是由多列组成的表中的键。如果您的每个 PersonItemPlacePrice 都有一个 ID(即使它只是一个汽车-incrementing number)你不需要复合键 - 只需要每个表中的主键列,以及每个相关表的 Item 表中的外键列 - 例如item_idperson_idplace_idprice_id。您声明 Item 有自己的 ID,因此您不需要复合键 - 只需要 item_id 列上的主键。

关于使用 phpmyAdmin 的数据库关系(复合键),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2574228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com