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
列给出。
是否需要在外表中使用主键?
请告诉我这些适当的架构创建?
答案 0 :(得分:1)
您的数据结构设置错误。这是你的第一张表:
ID | product_code | product name | company_id
1 | 12345 | beer cake |343434defee
2 | 12346 | vodka cake |343434deereee
这很好。 ID
- 大概是 - 每行的唯一ID。它应该被声明为主键。 product_code
应声明为unique
。
第二个表应包含id
,而不是product_code
。 Product_code
是第一个表的每一行的属性。您有id
来引用该行。
答案 1 :(得分:1)
如果您的FK指向具有唯一约束的列,则可以检查here以获取详细信息。
在此之前,您应该澄清您的设计:
1)为您的表提供有意义的名称。例如。表1 - <svg class="svg__container" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<circle class="svg__circle" cx="50%" cy="50%" r="25%" fill="currentColor" />
</svg>
,表2 - Product
2)为表ProductTransaction
创建主键:对于大多数使用场景,ProductTransactionId列应该没问题
3)在ProductTransaction
和ProductTransaction
表之间创建外键。虽然您可以使用Product
列,但我建议您将定义标准化:
a)从ProductTransaction中删除product_code
b)添加product_code
并定义指向ProductId
这样,您将存储更少的数据(只是一些整数而不是字符串),并且表之间的连接会更快。