And*_*ham 4 mysql database-design database-schema
我是数据库设计的新手,在查找有关如何定义“多对一”关系的信息时遇到了一些麻烦。我可以在“一对多”和“多对多”中找到各种信息,而在“多对一”中则找不到任何信息。我的难题是如何存储数据。我有一个表叫做“类别”,然后我有另一个表叫做“库存”,每个“库存”项目都可以属于多个“类别”。
如何在一个“库存”行中存储多个“类别”?我是否应该有一个中间表来存储“类别” ID和相应的“库存” ID?还是在JSON字符串中添加类似“清单”行中具有“类别” ID的东西是正确的方法?还是有一种方法可以在“库存”行中存储“类别” ID的数组?
感谢分配的帮助!
首先,我建议您下载mysql 工作台- 它为您提供了一个很好的可视化数据库设计模式,因此您可以看到事物如何结合在一起(为您创建外键关系等)。
在这种情况下,这实际上是一个多对多关系。因此,您将需要一个类别表、一个库存表和一个 category_has_inventory 表(或inventory_has_category 取决于语义),您可以在其中存储每个元组中库存和类别的 id - Workbench 甚至在使用多对- 许多关系工具。
如果您需要进一步的帮助,请回到这里。
如果一个类别只能包含一个库存项目,那么您可以通过将 inventory_id 添加到类别表来创建一对多关系,但这对我来说听起来是错误的。
正确的术语Many to One是One to Many。只需创建一个这样的表,
CREATE TABLE Categories
(
CategoryID INT Primary KEY,
CategoryName
);
CREATE TABLE InventoryList
(
ProductID INT Primary KEY,
CategoryID INT,
ProductName VARCHAR(50),
CONSTRAINT tb_fk FOREIGN KEY (CategoryID) REFERENCES Categories(CategoryID)
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11394 次 |
| 最近记录: |