[英]SQL additional column or Many To One relationship
我有一个Product实体,每个产品都有一个类型,比方说手机或笔记本电脑,因此最好在“ type”列中创建product实体:
CREATE TABLE product (
id int PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
type VARCHAR(10) NOT NULL
)
或者为该类型创建一个表并建立多对一关系:
CREATE TABLE product (
id int PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
type_id INT NOT NULL,
FOREIGN KEY (type_id) REFERENCES type(id)
)
CREATE TABLE type(
id int PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(10) NOT NULL,
)
假设一个产品可以有多种类型,那么正确的关系就是三个表。 就您而言,您只有一种类型。
第二种方法更好的原因是因为它使用适当的外键关系来强制类型。 因此,您不必担心一行是'phone'
而另一行是'Phone'
。 您具有可用类型的显式列表。
如果这要进入应用程序,那么比这样的列表更为重要,因为它直接输入到用户界面中您想要类型列表(例如选择列表)的元素中。
如果您的产品只有一种类型,那么通过引入“附加表”,就不会有任何收获,而且会给您带来不必要的额外复杂性带来很大的风险。 类型应在同一表中,表中应为varchar,在Java中具有@Enumerated(String)批注的枚举。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.