MySQL 外键设置

标签 mysql database foreign-keys foreign-key-relationship

作为 dba 新手,我正在开发一个简单的库存数据库。这将列出设备项目、品牌、型号和状态(事件/非事件/丢失)。

我在这个项目中使用 MySQL Workbench、PhpMyAdmin、XAMPP、PHP、MySQL。

我不确定我是否以正确的方式处理这个问题,希望有人能给我一些建议。

到目前为止,我有两个表 - itemsstatus

项目

+--------+-------+------+-----------+--------+
| itemId | invNo | make | model     | status |
+--------+-------+------+-----------+--------+
| 1      | 123   | HP   | 566       | 1      |
+--------+-------+------+-----------+--------+
| 2      | 432   | Dell | Precision | 1      |
+--------+-------+------+-----------+--------+
| 3      | 456   | Dell | Precision | 2      |
+--------+-------+------+-----------+--------+

状态

+----------+------------+
| statusId | statusType |
+----------+------------+
| 1        | Active     |
+----------+------------+
| 2        | Inactive   |
+----------+------------+
| 3        | Lost       |
+----------+------------+

(您可以在上面看到,在我的 items 表中,有两个事件项目和一个非事件项目)。

在前端应用程序中,表格将列出所有项目及其相应的状态(如下所示的文本)。

+--------+-------+------+-----------+--------+
| itemId | invNo | make | model     | status  |
+--------+-------+------+-----------+--------+
| 1      | 123   | HP   | 566       | Active  |
+--------+-------+------+-----------+--------+
| 2      | 432   | Dell | Precision | Active  |
+--------+-------+------+-----------+--------+
| 3      | 456   | Dell | Precision | Inactive|
+--------+-------+------+-----------+--------+

理想情况下,我希望能够更改我的 status 表中的状态类型,并相应地更新我的items

  • 一件元素只能有一种状态
  • 一个 statusType 可以分配给多个项目

我需要使用外键关系吗?

这里的任何帮助或指导都会很棒。我想开始走上正确的道路!

最佳答案

您的设置是正确的。在状态表中,statusId 是主键,在项目表中,状态是外键。这意味着它是引用另一个表中的主键的值。

要添加约束,您可以执行以下操作:

ALTER TABLE items ADD FOREIGN KEY (status) REFERENCES status(statusId);

关于MySQL 外键设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34993365/

相关文章:

mysql - 为什么我要从 SQLTables 返回 unicode 值?

mysql - 根据SQL中的属性删除重复行

database - ZF2 在 View 助手中使用数据库表模型

mysql - 在 phpMyAdmin 中消失的外键

ruby-on-rails - 带有 ActiveRecord 的两个外键? [ rails ]

php - MySQL - 在插入时返回生成的 AUTO_INCREMENT 值

sql - 如何从 Word 2010 中的 SQL 数据库中检索数据?

php - PayPal IPN 未更新 MySQL 数据库

database - Postgresql 中的约束

php - 无法将特定行插入数据库 PHP MySQL JSON