作为 dba 新手,我正在开发一个简单的库存数据库。这将列出设备项目、品牌、型号和状态(事件/非事件/丢失)。
我在这个项目中使用 MySQL Workbench、PhpMyAdmin、XAMPP、PHP、MySQL。
我不确定我是否以正确的方式处理这个问题,希望有人能给我一些建议。
到目前为止,我有两个表 - items
和 status
。
项目
+--------+-------+------+-----------+--------+
| 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/