【发布时间】:2011-04-07 01:50:37
【问题描述】:
这应该是一个相当简单的问题,但我找不到简单的答案。你如何创建一个外键同时也是 MySQL 中的主键?这是我目前的尝试:
CREATE TABLE Sale(
sale_id CHAR(40),
PRIMARY KEY(sale_id),
discount DOUBLE,
type VARCHAR(255),
price DOUBLE,
);
CREATE TABLE Normal_Sale(
sale_id CHAR(40),
PRIMARY KEY(sale_id);
);
CREATE TABLE Special_Sale(
sale_id CHAR(40),
PRIMARY KEY(sale_id);
);
我在这里错过了什么?
提前致谢。
【问题讨论】:
-
这个设计看起来不对。对我来说,您似乎可以在 Sale 中添加一个字段,将其标记为 Normal 或 Special。这味道
-
您对架构进行了过度规范化。正如 Joe Phillips 所说,存在一个更简单的解决方案。您的设计可能会让人头疼,因为这两种状态应该是互斥的(正常或特殊),是什么阻止了销售在您的模式中被记录为特殊和正常? 代码,你说?就是这样;那是你不需要的头痛。
-
这些只是虚拟示例。这个问题不是设计问题,而是技术问题。
标签: mysql inheritance foreign-keys primary-key