我在使用MySQL中的子类型/超类型时遇到了一些麻烦。 我使用C#.NET为我的本地俱乐部制作一个管理系统,我在制作一个不错的数据库时遇到了一些麻烦。
我的数据库如下所示:
超型:
========
Product
---------
Prod_id (PK)
Name
Barcode
和子类型:
=======
Card
--------
Prod_id (FK)
Price
我有3个子类型,卡片,武器,Ammonution,基本上是相同的东西(虽然我在其中存储不同的东西)
也许我的事情过于复杂,但我想要做的就是,当我创建一张新卡时,会自动生成一个产品(我使用触发器),并且Cards.Prod_id设置为新生成的产品。
我该怎么做? 这是使用子类型的正确方法,还是我做错了什么?
答案 0 :(得分:2)
您可以使用触发器。但是,还有另一种,我认为更好的方式:
MySQL示例:
CREATE TABLE Product(
Prod_id INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(40),
Barcode INT
);
CREATE TABLE Card(
Prod_id INT,
Price DECIMAL(8, 2),
FOREIGN KEY (Prod_id) REFERENCES Product(Prod_id)
);
INSERT INTO Product VALUES (NULL, 'phone', 1000);
INSERT INTO Card VALUES(LAST_INSERT_ID(), 10.5);
第一个INSERT墙添加具有自动生成ID的新产品。第二个,将获得这个新ID并将其用于新卡记录。