mysql - 外表中是否必须有主键?

标签 mysql sql

            Table one
                ID | product_code | product name | company_id 
                1  |  12345       | beer cake    |343434defee
                2  |  12346       | vodka cake   |343434deereee

            Table two
                   Product_code |Quantity | price | weight 
                   12345        |  34     |345    |0.5 
                   12345        |  343    |600    |1.0 
                   12345        |  4      |845    |1.5 
                   12346        |  341    |345    |0.5 


         CREATE TABLE `one`(
         ID INT  NOT NULL AUTO_INCREMENT PRIMARY KEY,
         product_code VARCHAR(32) NOT NULL ,
         name VARCHAR(30) NOT NULL ,
         company_id VARCHAR(30) NOT NULL)

         CREATE TABLE two(
         product_code VARCHAR(32) ,
         weight VARCHAR(20) NOT NULL ,
         price  INT(4) NOT NULL , 
         Quantity INT(4) NOT NULL ,
         FOREIGN KEY (product_code) REFERENCES one(product_code))

这就是我的表格的样子,每种类型的蛋糕都必须显示在产品登陆页面上。两个表格之间的关系由product_code列给出。

外表是否必须有主键?

请告诉我如何为这些创建正确的架构?

最佳答案

您的数据结构设置错误。这是您的第一个表:

ID | product_code | product name | company_id 
1  |  12345       | beer cake    |343434defee
2  |  12346       | vodka cake   |343434deereee

这很好。 ID 大概是每行的唯一 ID。应将其声明为主键。 product_code 应声明为唯一

第二个表应包含id,而不是product_codeProduct_code 是第一个表的每一行的属性。您有 id 来引用该行。

关于mysql - 外表中是否必须有主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39934972/

相关文章:

mysql - Mysql 存储过程中的不同结果

php - MYSQL 逗号分隔列表,可以添加和删除值吗?

MySQL 前导 0 的日期格式

mysql - 使用 SQL 表达式计算公寓的填充度

php - 将唯一字符串转换为时间戳

sql - 按星期几订购日期

sql - Postgresql 将属性与表混淆

sql - 将字段与值进行比较并返回 bool

java - UTC 或时区时间戳的 SQL 标准

mysql - SQL 触发器错误