MySql "Many to One"表设计

标签 mysql database-design database-schema

我是数据库设计的新手,在查找有关如何定义“多对一”关系的信息时遇到了一些麻烦。我可以找到关于“一对多”和“多对多”的各种信息,但没有关于“多对一”的信息。我的挂断是如何存储数据。我有一个名为“类别”的表,然后我有另一个名为“库存”的表,每个“库存”项目可以属于多个“类别”。

如何在单个“库存”行中存储多个“类别”?我是否应该有一个中间表来存储“类别”ID 和相应的“库存”ID?或者添加类似 JSON 字符串的东西,在“库存”行中具有“类别”ID 是执行此操作的正确方法吗?或者有没有办法在“库存”行中存储“类别”ID 数组?

感谢allot的帮助!

最佳答案

多对一的正确术语是一对多。只需像这样创建一个表,

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)
);

关于MySql "Many to One"表设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13516839/

相关文章:

mysql - 当我只想按日期分组时,如何为日期时间执行 'group by'?

sql-server - 需要建议 : SQL Server DB Architecture for Large Database

sql-server - 在大型数据集中查找给定查找日期的最后一次已知事件

mysql - 教程 Web 应用程序的数据库设计

types - SQL Alchemy - 使用 TypeDecorator 进行模式提取

database - 如何在 Oracle 11g 中创建和访问多个数据库?

python - 异步服务调用 Python

php - 选择两个日期范围之间的特定记录

mysql - 如何以Python方式匹配和分配数据?

postgresql - 将用户限制在 PostgreSQL 中的一个模式?